Unittest重要组成
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试
unittest中最核心的部分是:TestFixture、TestCase、TestSuite、TestRunner
TestFixture:于一个测试环境的准备和销毁还原。
主要方法:
setUp():准备环境,执行每个测试用例的前置条件;
tearDown():环境还原,执行每个测试用例的后置条件;
setUpClass():必须使用@classmethod装饰器,所有case执行的前置条件,只运行一次;
tearDownClass():必须使用@classmethod装饰器,所有case运行完后只运行一次;
TestCase:测试用例
测试用例命名规则:继承自unittest.TestCase的类中,测试方法的名称要以test开头。
且只会执行以test开头定义的方法(测试方法),
测试用例执行的顺序会按照方法名的ASCII值排序。
TestSuite:
TextRunner
断言:验证预期结果和实际结果(第一个用的最多)
assertEqual(a,b):断言a和b是否相等,相等则测试用例通过。
assertNotEqual(a,b):断言a和b是否相等,不相等则测试用例通过。
assertTrue(x):断言x是否True,是True则测试用例通过。
assertFalse(x):断言x是否False,是False则测试用例通过。
assertIs(a,b):断言a是否是b,是则测试用例通过。
assertNotIs(a,b):断言a是否是b,不是则测试用例通过。
assertIsNone(x):断言x是否None,是None则测试用例通过。
assertIsNotNone(x):断言x是否None,不是None则测试用例通过。
assertIn(a,b):断言a是否在b中,在b中则测试用例通过。
assertNotIn(a,b):断言a是否在b中,不在b中则测试用例通过。
assertIsInstance(a,b):断言a是是b的一个实例,是则测试用例通过。
assertNotIsInstance(a,b):断言a是是b的一个实例,不是则测试用例通过。
单元测试之pytest:
Pytest单元测试中的类名和方法名必须是以test开头,执行中只能找到test开头的类和方法,比unittest更加严谨
Allure常用的几个特性:
@allure.feature # 用于描述被测试产品需求
@allure.story # 用于描述feature的用户场景,即测试需求
with allure.step(): # 用于描述测试步骤,将会输出到报告中
allure.attach # 用于向测试报告中输入一些附加的信息,通常是一些测试数据,截图等