unittest和pytest的区别

pytest为第三方单元测试库,需额外安装;unittest为标准库,无需额外安装。其余不同可以分成用例管理,参数化,断言对比,报告4个方面来总结。

一、用例管理

  1. 标记testCase的方法

    unittest pytest
    测试类必须继承unittest.TestCase 测试类命名以"Test"开头,但是无需继承,用例可以是函数,也可以是类
    测试方法必须以“test_”开头 测试方法必须以“test_”开头
    测试类必须要有unittest.main()方法 测试文件名必须以“test_”开头或者"_test"结尾(如:test_ab.py)
  2. 用例的前置和后置条件处理

    unittest pytest
    unittest提供了setUp/tearDown,每个用例运行前、结束后运行一次。setUpClass和tearDownClass,用例执行前、结束后,只运行一次 pytest提供了模块级、函数级、类极、方法级的setup/teardown,比unittest的setup/tearDown更灵活
  3. 用例分类

    unittest pytest
    unittest默认执行全部用例,也可以通过加载testsuit,执行部分用例 pytest可以通过@pytest.mark来标记类和方法,pytest.main加入参数("-m")可以只运行标记的类和方法
  4. 用例可否失败重试

    unittest pytest
    unittest无此功能 pytest支持用例执行失败重跑,pytest-rerunfailures插件pip install pytest-rerunfailures
  5. 兼容性
    pytest可以执行unittest风格的测试用例,无须修改unittest用例的任何代码,有较好的兼容性

二、参数化

unittest pytest
unittest需依赖ddt库 pytest直接使用@pytest.mark.parametrize装饰器

三、断言对比

unittest pytest
unittest提供了assertEqual、assertIn、assertTrue、assertFalse pytest直接使用assert 表达式

四、生成报告的方式

unittest pytest
unittest使用HTMLTestRunnerNew库 pytest有pytest-HTML、allure插件

最后再来回顾一遍

posted @ 2022-05-03 13:29  阳光下的小水仙  阅读(783)  评论(0)    收藏  举报