-
unittest单元测试框架集合Testcase(编写用例)、testloader(discover方法加载测试用例)、testsuite(测试套件)、testRunner(run方法运行测试用例)、fixture(前置后置)
-
编写测试用例的规则不同:
unittest:文件名需要“test_”开头,类名以“Test”开头,方法名需要“test_”开头;
pytest:文件名需要“test_”开头或者下划线test结尾,类名以“Test”开头,方法名需要“test_”开头,,,不能有"init"方法 -
数据驱动思想不同:
unittest首先需要测试文件import unittest、ddt、data;类名@ddt且继承unittest的TestCase,方法名@data(*cases),data用于接收传入的每一组测试用例数据;
pytest方法名直接用@pytest.mark.parametrize(“参数名:命名自定义”,测试数据)装饰器 -
前后置不同:
unittest前后置:setup(self):每个测试方法前运行、setupclass(cls):所有测试方法前运行、teardown(self):每个测试方法后运行、teardownclass(cls):所有测试方法后运行
pytest前后置:首先文件必须以“conftest”命名,方法需要@pytest.fixture来声明是一个测试夹,有不同作用域(function、class、module、session)的fixture;前后置用关键字“yield”来区分
function:方法和函数(默认)、class类、module模块、session会话:全局配置操作;返回值是函数名;如果是不同的作用域,低级别的可以调用高级别的,可以嵌套高级别的以及同级别的,反过来不行; -
断言不同:
unittest断言:方法有assertIn、assertEqual、assertTrue等等
pytest断言:只需要用assert直接断言 -
收集测试用例不同:
unittest需要通过TestLoader的discover方法去收集测试用例
pytest直接通过pytest的main方法直接加载符合规则的测试用例 -
插件不同:
unittest是没有插件的
pytest有丰富的allure插件,里面有丰富的报告
注解:欢迎补充!!!