pytest和unittest框架对比

unittest

  1. unittest是python中的官方库,兼容性更好,更稳定。而pytest需要pip install 安装,在安装的时候,可能会出现和python版本的兼容问题。
  2. 定义测试用例类:用例类必须继承于unittest.TestCase
    定义测试用例:在测试用例类中,每一个以test开头的方法就是一条用例
  3. 可以结合HTMLTestRunner来生成测试报告  https://www.cnblogs.com/erchun/p/12439195.html
  4. 跳过用例不执行的方法:在测试用例前加@unittest.skip装饰器
  5. 前置后置写在测试用例下,用setUp和tearDown方法
  6. (与框架无关,其他地方也可以用,拓展)unittest框架有个mock模块,from unittest import mock,应用场景:项目初期,接口文档已给出,复杂接口功能未实现。但其他接口链路需要调用,可以先mock一个返回值 https://www.cnblogs.com/erchun/p/13463088.html
  7. 可与ddt连用实现数据驱动
      • 用@ddt和@data两个装饰器,@ddt放在类前,@data放在测试用例函数前,@data()传入用例拆包,测试用例传入每条用例(可命名为case)

 

pytest

  1. pytest 兼容 unittest,使用unittest写的用例,可以通过pytest去执行

  2. 加载用例更加智能,test_开头的文件、大写Test开头的类、test开头的函数 都能被加载出来

  3. pytest可以对用例做分类管理,执行用例更加的灵活。可以通过@pytest.mark.xxx给用例打标记,不仅仅限于skip方法,可以单独执行打标记的用例。

      •   注意:在启动文件同级别目录下创建一个 pytest.ini的配置文件去记录打的标记
  4. pytest用例执行的前置后置处理更加高级。

      • 前后置方法全部存放在conftest.py文件中统一管理。使用时在测试用例中入参传入前后置方法名即可。

      • 编写前后置方法时需在开头加上@pytest.fixture()装饰器
  5. pytest支持的插件非常丰富,功能扩展性强  https://www.cnblogs.com/erchun/p/13463504.html

      • 下载 pip install pytest-repeat插件,重复执行用例多次
      • 下载 pip install pytest-rerunfailures 插件,用例失败时重运行
  6.  pytest结合数据驱动可做接口自动化测试
      •  @pytest.mark.parametrize('case', cases),第一个参数为传入驱动名称,第二个参数为数据源

 

posted @ 2020-08-18 17:04  mkay  阅读(29)  评论(0编辑  收藏  举报