zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【使用unittest框架】unittest中的方法:学习setUp()和tearDown()函数以及断言方法

方法学习框架 函数 以及 断言 setup unittest
2023-09-11 14:17:00 时间

前言

一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210418。

5、使用unittest框架

  1. unittest框架简介

  2. unittest中类方法和实例方法

  3. 测试用例和测试套件

  4. 使用unittest重构测试用例

  5. 为项目生产测试报告

unittest中类方法和实例方法

  • 方法分类:

  1. 类方法:只运行一次
  2. 实例方法:每次运行用例都执行
  • 执行顺序

  1. setUpClass->setUp->test01->tearDown->setUp->test02->tearDown->tearDownClass
  2. 用例之间按用例名称ASCLL码的顺序加载,数字与字母顺序为:0~9,A~Z,a~z
  • 实例1(执行顺序)。方法可用快捷键ctr+O选择

  • 什么是setUp()和tearDown()函数?

  1.  setUp()函数是在众多函数或者说是在一个类类里面最先被调用的函数,而且每执行完一个函数都要从setUp()调用开始后再执行下一个函数,有几个函数就调用他几次,与位置无关,随便放在那里都是他先被调用。
  2. tearDown()函数是在众多函数执行完后他才被执行,意思就是不管这个类里面有多少函数,他总是最后一个被执行的,与位置无关,放在那里都行,最后不管测试函数是否执行成功都执行tearDown()方法;如果setUp()方法失败,则认为这个测试项目失败,不会执行测试函数也不执行tearDown()方法。
  • 为什么我们要用setUp()和tearDown()函数?

我们利用这一特性在自动化中setup主要是进行测试前的初始化工作,比如在接口测试前面做一些前置的参数赋值,数据库操作等等 teardown是测试后的清除工作,比如参数还原或销毁,数据库的还原恢复等

  • 函数和断言方法

方法描述
setUp()

用于测试用例执行前的初始化工作。如测试用例需要访问数据库,可以在setUp()中建立数据库连接并初始化,需要登录web,可以先实例化浏览器等。

tearDown()

用于测试用例执行之后的善后工作,比如关闭数据库连接,关闭浏览器等。

assertEqual(a, b, [msg=测试失败时打印的信息])

断言a,b两个值是否相等,相等则测试通过。msg为可选参数,用于失败时打印信息

assertNotEqual(a, b, [msg])

断言a,b两个值是否相等,不相等则测试通过.

assertTrue(x, [msg])

断言x是否True,true则测试通过

assertFalse(x, [msg])

断言x是否False,False则测试通过

assertIs(a, b, [msg])

断言a是否是b,是则测试通过

assertNotIs(a, b, [msg])

断言a是否是b,不是则测试通过

assertIsNone(x, [msg])

断言x是否是None,是None则测试通过

assertIsNotNone(x, [msg])

断言x是否是None,是None则测试通过

assertIn(a, b, [msg])

断言a是否在b中,是则测试通过

assertNotIn(a, b, [msg])

断言a是否在b中,不在则测试通过

assertIsInstance(a, b, [msg])

断言a是否是b的一个实例,是则测试通过

assertNotIsInstance(a, b, [msg])

断言a是否是b的一个实例,不是则测试通过

  • 实例2

  • 最后附上2个实例代码

  • 1.实例1代码

import unittest

class MyTestCase(unittest.TestCase):
    def setUp(self) -> None:
        super().setUp()
        print('setUp....')

    def tearDown(self) -> None:
        super().tearDown()
        print('tearDown....')

    def test01(self):
        print("test01")

    def test02(self):
        print("test02")


    @classmethod
    def setUpClass(cls) -> None:
        super().setUpClass()
        print('setUpClass....')


    @classmethod
    def tearDownClass(cls) -> None:
        super().tearDownClass()
        print('tearDownClass....')

if __name__ == '__main__':
    unittest.main()
  • 2.实例2代码

from selenium import webdriver
import unittest  # 第一步引入一个unittest
import time


class Search(unittest.TestCase):  # 第二步创建继承一个unittest.TestCase的类

    def setUp(self):  # 第三步定义一个setup,放一些准备的工作,或者准备一些测试数据。
        print('========== 测试开始 ==========')
        self.driver = webdriver.Chrome()  # 加载chrome驱动
        self.driver.maximize_window()  # 放大浏览器
        self.driver.get("https://www.baidu.com")  # 打开网址
        print(self.driver.title)  # 获取标题头并打印出来
        print(self.driver.current_url)  # 获取当前页面的url
        time.sleep(2)  # 休眠2s

    def test_001(self):  # 进行搜索
        self.driver.find_element_by_id('kw').send_keys("小慌慌的博客")  # 输入账号
        self.driver.find_element_by_id('su').click()  # 点击搜索
        time.sleep(2)
        print(u'进入小慌慌博客的搜索结果页')

    def test_002(self):  # 进行搜索
        self.driver.find_element_by_id('kw').send_keys("selenium")  # 输入账号
        self.driver.find_element_by_id('su').click()  # 点击搜索
        time.sleep(2)
        print(u'进入selenium的搜索结果页')

    def tearDown(self):  # 第三步:定义一个tearDown,当我在测试完的时候我要对测试有一个销毁的过程比如说关闭浏览器,那么我们就写在tearDown当中
        self.driver.quit()
        print('========== 测试结束 ==========\n')


if __name__ == '__main__':  # 如果其他的类调用的这个类的时候他就会自动忽略掉这个函数,他是为了测试自身的类用的
    unittest.main()  # 启动程序

“永不放弃,总有希望在前面等待!”送给自己,也送给正在阅读文章的博友们~