pytest使用教程

文档

https://docs.pytest.org/en/latest/

安装

pip install pytest
pip install -U pytest
pytest --version
pytest --help

测试用例识别与运行

  • 测试文件
    • test_*.py
    • *_test.py
  • 用例识别
    • Test类包含的所有test_的方法,测试类不能带有__init__方法
    • 不在类中的所有test_*方法
  • pytest可以执行unittest框架写的用例和方法
  • 运行
    • 命令行执行pytest
    • 命令行执行pytest -v 展示运行详细信息
    • 代码中pytest.main(['test_a.py']),使用python解释器运行或python test_a.py
    • pytest.main(['test_a.py::TestDemo', '-v'])
    • 用例顺序从上往下顺序执行

命令参数

  • -k 运行选中用例,后面跟表达式匹配测试用例名称
  • -v 输出展示详细信息
  • --setup-show 展示运行过程

插件

运行级别

参数化

@pytest.mark.parametrize('a,b', [ (1,2), (10,20)])
可利用参数生成多条测试用例

  • 第一个参数标识参数化的名字
  • 第二个参数标识参数化的值
  • ids修改参数化用例名称

异常捕获

  • Python try:except 放放
  • pytest
with pytest.raises(ErrorName):
    #业务代码

fixture

@pytest.fixture

  • 在测试函数运行前后运行,方便做测试前的准备工作。
  • 通过函数中传入名字调用或使用装饰器@pytest.mark.usefixtures(''),装饰器调用无法获取返回值
  • 可以使用多个fixture
  • 使用autouse自动应用,默认为False
  • 作用域scope:
    • session 所有
    • module 模块级别
    • class 类
    • function 方法
    • package 包级别。
  • yield 激活用例后执行部分teardown

conftest.py

  • 命名不可变
  • 使用无需导入
  • 需要__init__.py文件
  • conftest.py与被测用例放在同一路径下。可以放在不同目录,作用域不同,就近原则。

常用插件

  • pytest-ordering 控制用例执行顺序
  • pytest-dependency 控制用例的依赖关系
  • pytest-xdist 分布式并发执行测试用例
  • pytest-rerunfailures 失败重跑
  • pytest-assume 多重校验
  • pytest-random-order 用例随访执行
  • pytest-html 测试报告

hooks

  • 在sitepackages文件夹下_pytest下有hoospec.py文件中又预先定义好的hooks函数
  • 可在conftest.py中改写
posted @ 2023-04-19 17:29  郭菜菜啊  阅读(165)  评论(0)    收藏  举报