pytest常用的方法和原理

1.pytest的原理

  1. pytest插件基于pluggy模块;pluggy有三个重要概念:HookspecMarker(用来定义hook函数),HookimplMarker(用来实现钩子函数完成插件的逻辑)和PluginManager(用来负责注册和调用插件的管理器);

 

2.pytest的规定

  1. 所有规范和实现均遵循pytest_前缀命名约定,从而易于区分和查找

3.加载插件的方式

  1. 内置插件:从代码内部的_pytest目录加载
  2. 外部插件(第三方插件):通过setuptools entry points机制发现的第三方插件模块
  3.  conftest.py形式的本地插件:测试目录下的自动模块发现机制

4.pytest插件的顺序

1.通过扫描命令行中的选项并阻止该插件被加载(即使内置插件也可以通过这种方式被阻止)。这是在正常的命令行解析之前发生的。-p no:name

2.加载所有的内置插件

3.通过预扫描命令行中,-p name选项,在实际解析命令行之前加载指定的插件

4.加载所有通过setuptools入口点注册的插件(可设置环境变量PYTEST_DISABLE_PLUGIN_AUTOLOAD进行禁用,仅加载明确指定的插件)

5.加载通过环境变量PYTEST_PLUGINS指定的所有插件

6.加载通过命令行推断出的所有confest.py文件:

-如果未指定测试路径,则使用当前dir作为测试路径

-如果存在指定测试路径,那么加载conftest.py和test */conftest.py,相对于第一个测试路径

注意,pytest是找不到藏在更深的子目录里的confest.py文件的,最好将confest.py保存在顶级的测试或者项目的根目录

7.通过在confest.py文件中的pytest_plugin指定的变量,递归加载所有的插件

5.安装路径

  • pytest第三方插件库网站 https://docs.pytest.org/en/latest/plugins.html

 

 

  • PyPI下载 https://pypi.python.org(可以使用pytest、pytest-、-pytest作为搜索关键字来搜索插件)

 6.常用的插件简单描述

  • pytest-rerunfailures:失败用例重跑
  • pytest-html:生成xml/html格式的测试报告,存储于用户指定路径
  • pytest-repeat:重复执行多次用例
  • pytest-assume:进行多次断言
  • pytest-xdist:测试用例可以分布式执行,从而节省自动化测试时间
  • pytest-cov:覆盖率报告,显示哪些代码行已经测试过,哪些还没有
  • pytest-instafail:在测试运行期间报告失败
  • pytest-timeout:根据函数标记或全局定义进行超时测试
  • pytest-ordering:设定执行顺序。对于一些上下文依赖的,有时候可能需要设定一些特定执行顺序
  • pytest-cache:重跑上次失败的用例
  • pytest-autochecklog:自动生成测试日志
  • pytest-sugar:改变默认外观,添加了一个进度条

 

版权声明:本文为zsplovezsp原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zsplovezsp/p/15221822.html