unittest和Pytest单元测试的框架的区别【杭州多测师】【杭州多测师_王sir】
1.pytest中的-s和-v有什么区别 ==》使用 -v 参数,会在 console 里打印出具体哪条测试用例被运行,-s :用于显示测试函数中print()函数输出
2.pytest里面的只执行某个类用什么方法 ==》pytest 文件名.py::类名 例如: #pytest.main(["-vs"],'./interface_testcase/test.py::TestLogin') ==》只运行test模块里面的TestLogin类
3.pytest里面的失败重跑机制用什么装饰器 ==》希望在某一条测试用例失败后重新执行,可以使用flaky装饰器 @pytest.mark.flaky(reruns=, reruns_delay=) ==》reruns 指定重跑的次数,reruns_delay 指定重跑的延迟时间
unittest和pytest的区别:
1.unittest测试类必须继承unittest.TestCase,但是pytest不需要
2.pytest是python的第三方测试框架,是基于unittest的扩展框架,比unittest更高效
3.unittest提供了setUp/tearDown,只能针对所有用例,pytest提供了模块、函数、类、方法级的setup/teardown,比unittest的setUp/tearDown更灵活
4.pytest还可以在函数前加@pytest.fixture()装饰器,在测试用例中装在fixture函数。fixture的使用范围可以是function,module,class,session
firture相对于setup和teardown来说有以下几点优势:
1)命名方式灵活,不局限于setup和teardown这几个命名
2)conftest.py 配置里可以实现数据共享,不需要import就能自动找到一些配置,可供多个py文件调用。
3)scope="module" 可以实现多个.py跨文件共享前置
4)scope="session" 以实现多个.py跨文件使用一个session来完成多个用例
5)用yield来唤醒teardown的执行
5.unittest提供了assertEqual、assertIn、assertTrue、assertFalse,pytest直接使用assert 表达式
6.unittest需要第三方的HTMLTestRunnerNew库支持生成报告,pytest有pytest-HTML、allure插件生成报告
7.unittest没有失败重跑的功能,pytest支持用例执行失败重跑,增加pytest-rerunfailures插件就可以了
8.参数化的话,unittest需依赖ddt库,pytest直接使用@pytest.mark.parametrize装饰器
9.用例分类执行方面,unittest默认执行全部用例,也可以通过加载testsuit,执行部分用例,pytest可以通过@pytest.mark来标记类和方法,pytest.main加入参数("-m")可以只运行标记的类和方法。
10.unittest用例格式复杂,兼容性无,插件少,二次开发方便。pytest更加方便快捷,用例格式简单,可以执行unittest风格的测试用例,无须修改unittest用例的任何代码,有较好的兼容性。pytest插件丰富,比如flask插件,可用于用例出错重跑,还有xdist插件,可用于设备并行执行,效率更高。
11.pytest和unittest的运行规则是什么? ==》以test_开头,通过ASCII码的顺序运行