1,pytes框架介绍及与unittest框架对比

一,pytest与unittest对比

1,编写测试用例

1.1规则

unittest:

  • 测试类必须继承unittest.TestCase
  • 测试函数必须以"test_"开头
  • 使用defaultTestLoader.descover()加载测试用例时,测试模块(py文件)名称要以test_开头

pytest:

  • 测试模块文件的文件名必须是"test_.py"或者以"_test.py"
  • 测试类命名必须以"Test"开头
  • 测试函数名必须以"test_"开头
  • 测试类里面不能使用"init"方法

1.2前置后置

unittest:

  • setup/teardown:在每个用例执行前后执行.
  • setupclass/teardownclass:在类中用例执行前后执行.

pytest:
方案一:

  • setup/teardown:会话级别,类和类外用例都可以使用.
  • setup_calss/teardownclass:类级别,测试类执行前后执行.
  • setup_module/teardown_module:模块级别,整个模块之情前后执行
    pytest方案二:
    fixture,是pytest特色,用的比较多

1.3断言

unittest: self.assertXXX()

  1. assertEqual(a, b)  判断 a 和 b 是否相等
  2. assertNotEqual(a, b)  判断 a 不等于 b
  3. assertTrue(a)  判断 a 是否为 Ture
  4. assertFalse(a)  判断 a 是否为 False
  5. assertIn(a, b)  a 包含在 b 里面
  6. asserNotIn(a, b)  a 不包含在 b 里面

pytest: assert 表达式,表达式为真判断通过,否者失败

2,收集测试用例

unittest:通过TestLoader.discover(目录)收集到套件中
pytest:为自动收集
收集方式:

  • 1,目录 --从那个目录下开始搜索用例,确定roodir:pytest命令在那个目录下运行,就以那个目录为roodir.
  • 2,文件名 --通过文件名过滤,查找符合条件(test_.py或者_test.py)的文件名
  • 3,函数名/类下的方法中进行查找,符合规定的用例
    --函数名以test_开头
    --以Test开头的类下的test_开头方法

3,执行测试用例

unittest:run方法

pytest:为收集并执行的过程.

  • 方式一:命令行的方式,pytest -s -v 控制台显示详细的用例执行情况.
  • 方式二:main文件的方式,py文件main:pytest.main([命令行参数])

pytst的执行顺序:

  • 1,通过文件名的ascii码的顺序执行,可通过改变文件名调整执行顺序.
  • 2,py文件内部根据代码的顺序执行.

4,测试报告生成

unittest:

  • 通过HTMLTestRunner生成
  • 通过BeautifulReport生成

pytest:

  • html插件:
    --安装html插件:pip install pytest-html
    --在运行用例的时候,添加参数 --html=htlm的路径(相对于roodir的路径)
  • allure
    --安装allure命令行(手动安装适用于各种平台)
    --安装allure与pytest的集成:pip install allure-pytest

二,pytest的特色

  • 1,自动收集测试用例
  • 2,断言使用 assert 表达式
  • 3,可以设置多种级别的fixture来共享前置后置,有自己独特的fixture方式
  • 4,有丰富的插件库,比如测试报告allure,官方文档:https://docs.pytest.org/en/stable/
难者不会 会者不难 学是关键
原文地址:https://www.cnblogs.com/hsmwm/p/15671645.html