pytest使用整理

pytest

常用插件(pip install 安装)
* pytest-html : 用于生成html格式的自动化测试报告
* pytest-xdist: 用于多线程执行用例的插件
* pytest-ordering:用于改变测试用例执行顺序
* pytest-rerunfailures:失败的用例重跑
* allure-pytest:用于生成allure报告
pytest默认规则
* 模块名必需以test_开头,或者_test结尾
* 测试类必须以Test开头,并且不能使用init的初始化方法
* 默认规则支持修改,可创建pytest.ini进行规则修改

pytest运行测试用例的方式
  • 主函数模式

    • pytest.main() :执行全部的用例
    • pytest.main(['-vs']) :执行全部用例,显示用例的打印
    • pytest.main(['./文件名']) :执行指定路径下的测试用例
    • pytest.main(['./文件名/模块名::类名::函数名']) :执行指定的函数
    • pytest.main(['-vs','./文件名']) :包含多个条件时,用逗号隔开
  • 命令行模式

    • pytest :执行全部的用例
    • pytest -vs :执行全部用例,显示用例的打印
    • pytest './文件名' :执行指定路径下的测试用例
    • pytest. './文件名/模块名::类名::函数名'] :执行指定的函数
    • pytest -vs './文件名' :包含多个条件时,用空格隔开

pytest执行参数

-s 表示输出调试的信息,包括函数里print打印
-v 显示更详细的信息
-vs 以上两个参数合并
-n 多线程运行,例如 -n 2 表示启动两个线程去执行用例
--renruns==num 失败用例重跑,当用例执行失败时,重新执行num次失败的用例
-x 表示只要有一个用例错了,测试停止
--maxfail=num 表示出现了num个用例报错时,测试停止
-k '字符' 执行带有标记字符的用例
-html 生成测试报告
-m '字符' 执行被‘字符’标记了的用例


pytest的运行顺序
  1. 自上而下的执行测试用例
  2. 按装饰器标记的顺序来执行:pytest@mark.run(order=num):标记后,以num的顺序执行,不同文件的用例也是按照这个标记执行
pytest的全局文件配置,pytest.ini
  • pytest.ini 这个文件它是pytest单元测试框架的核心配置文件
  • 位置:一般放在根目录
  • 编码:必须是ANSI,可以使用notpad++修改编码格式
  • 作用:改变pytest的默认配置规则
  • 生效规则: 主函数运行和命令行模式运行,都会去读取生效这个配置文件
pytest.ini的内容
 [pytest]
#命令行参数,用空格分离
addopts = -vs
#测试文件夹,支持自己配置
 testpaths =
#配置测试搜索的模块文件名称
pytest_files=test_*.py
#配置测试搜索的测试类名
python_classes=Test*       
#配置测试搜索的测试函数名
python_function=test

pytest 分组执行

在配置文件pytest.ini里添加

 markers = 
                          smoke : 冒烟用例

然后执行时,pytest -m“smoke”,就能实现只执行带有smoke装饰器的用例


pytest 跳过测试用例
  1. 无条件跳过
    @pytest.mark.skip(reason=”文字说明”)
  2. 有条件跳过
    @pytest.mark.skipif(条件限制)
pytest 的前后置器

setup/teardown , setup_class/teardown_class

def setup(self) : 每个用例前都会执行
def terdown(self):每个用例执行结束后都会执行
setup_class:每个类执行前,只执行一次
Terdown_class:每个类型执行结束后都会执行
使用fixture装饰器来实现部分用例的前置和后置
   @pytest.fixture(scope=””,params=””,autouse=””,ids=””,name=””)
  • scope表示的是被@pytest.fixture标记的方法作用域

    • function(默认)
    • class
    • module
    • package
    • session
  • params : 参数(支持 列表、元组、列表字典、元组字典)

  • autouse=Ture: 自动执行,默认是False

  • ids : 当使用params参数化时,给每一个值设置一个变量名,意义不大

  • name:给被@pytest.fixture标记当方法一个别名

通过conftest.py 和 @pytest.fixture() 结合使用全局当前置应用
  • conftest.py 文件是单独存放的一个夹具配置文件,名称不能改动
  • 用处可以在不同的文件夹里使用
  • conftest.py需要和运行的文件放置在同一文件夹
  • 可放置在全局使用,然后和其他放置在组文件夹里的conftest.py的组合使用

image

posted @ 2021-07-21 18:32  达克尼斯111  阅读(175)  评论(0)    收藏  举报