相同点:
都有如下步骤:
1.编写测试用例:测试类以Test开头,用例名以test_开头。
收集用例、执行用例、生成测试结果文件(html、xml)
区别:
pytest: 灵活
unittest: 模板化
1.编写测试用例
pytest:类和函数都可以
unittest:类,并且要继承unittest.TestCase类
断言
pytest: assert 表达式(True表示断言为真,False表示断言失败)
unittest: self.assertXXXX()
2.收集和执行测试用例
1、unittest: 用例收集(TestSuite/TestLoader)到TestSuite, TestRunner去执行用例。
2、pytest: 自动收集用例,再去执行。
pytest自动收集用例的规则:
1)确定搜索目录:从哪个目录开始搜索用例?
– pytest命令在哪个目录下执行,就以哪个目录为rootdir
– 新建main.py,在文件当中使用pytest.main() - 与在命令行当中执行pytest是一样的。
2)过滤测试文件:目录下有很多文件,如何过滤有测试用例的文件?
– 测试文件名:test_*.py 或者 *_test.py
3)过滤测试用例:文件当中,如何过滤测试用例?
– 测试用例名:test_开头 测试类名:Test开头。
pytest收集到的用例执行顺序?
先找到测试文件,再找测试文件当中的用例。
测试文件顺序:ASCII码
测试文件内部顺序:代码先后顺序
unittest收集到的用例执行顺序?ASCII码
3.生成测试结果
1、unittest: text,html(HtmlTestRunner,beautifulReport)
2、pytest:
1. 生成JunitXML 格式的测试报告:命令:--junitxml=path
2. 生成result log格式的测试报告:命令:--resultlog=report\log.txt
3. 生成Html格式的测试报告:命令:--html=report\test_one_func.html(相对于rootdir路径 )
第一步:安装pytest html插件
pip install pytes