Python(二)unittest框架&pytest框架
一、unittest框架
1、概念
test case——测试用例,是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。
test suite——测试套件,多个test case组合在一起组成test suite。
test runner——执行测试用例,其中的run(test)会执行test suite或test case中的run(result)方法。
test fixture——对测试用例环境的搭建和销毁。
2、常用属性
1)unittest模块
属性 | 说明 | 使用案例 |
---|---|---|
unittest.TestCase | 所有测试类都继承此父类,在其中可以编辑test case | class MyTestCase(unittest.TestCase): |
unittest.main() | 将一个单元测试模块变为可直接运行的测试脚本进行运行 | if __ name__ == ‘__ main__’: unittest.main() |
unittest.TestSuite() | 创建测试套件 | suite=unittest.TestSuite() |
unittest.TextTestRunner() | 可通过该类下面的run()方法来运行测试套件 | runner=unittest.TextTestRunner() |
unittest.defaultTestLoader() | 可通过该类下面的discover()方法可自动更具测试目录(start_dir)匹配查找测试用例文件(test*.py),并将查找到的测试用例组装到测试套件 | discover=unittest.defaultTestLoader.discover(test_dir, pattern=‘test_*.py’) |
unittest.TextTestRunner() | 可通过该类下面的run()方法来运行测试套件 | runner=unittest.TextTestRunner() |
unittest.skip() | 装饰器可暂时屏蔽该条测试用例 ①:无条件跳过装饰的测试 ②:@条件为真时,跳过装饰的测试 ③:条件为假时,跳过装饰的测试 |
①:@unittest.skip(reason) ②:@unittest.skipIf(condition,reason) ③:@unittest.skipUnless(condition,reason) |
2)TestCase模块
属性 | 说明 | 使用案例 |
---|---|---|
setUp() | 方法用于测试用例执行前的初始化工作,类中的每个用例执行前都会执行一次 | def setUp(self) -> None: |
setUpClass() | 方法用于测试类执行前的初始化工作,在测试类执行前执行一次 | @classmethod def setUpClass(cls) -> None: |
tearDown() | 方法用于测试用例执行之后的善后工作,类中的每个用例执行完毕后后都会执行一次 | def tearDown(self) -> None: |
tearDownClass() | 方法用于测试类执行后的善后工作,在测试类执行完毕后后执行一次 | @classmethod def tearDownClass(cls) -> None: |
assertEqual(a,b,[msg]) | 断言a和b是否相等,相等则测试用例通过 | — — |
assertNotEqual(a,b,[msg]) | 断言a和b是否相等,不相等则测试用例通过 | — — |
assertTrue(x,[msg]) | 断言x是否True,是True则测试用例通过< |