• Pytest_配置文件-pytest.ini(4)


    pytest配置文件可以改变pytest的默认运行方式,它是一个固定的文件名称pytest.ini。

    存放路径为项目的根目录

    解决中文报错

    在讲解配置文件的可用参数前,我们先解决一个高概率会遇到的问题, 那就是在pytest.ini文件 中不能使用任何中文符号,否则会报错:UnicodeDecodeError: 'gbk' codec can't decode

    成人不自在

    解决方法:点击倒数第二行的报错,进入iniconfig模块,找到其前面一行代码的open()函数,在open函数中中增加 encoding='utf-8'参数

    配置文件的参数值会被命令行覆盖

    当配置文件的参数与命令文件的参数重复时,命令行的参数值会覆盖配置文件中定义的参数值。、

    比如下图,命令行参数值为3,pytest.ini参数值为2,实际执行的参数值为3

    addopts-追加默认参数

    我们每次在CMD中执行pytest命令时,如果参数是固定的,可以使用该参数项减少繁琐的操作。比如CMD中输入以下命令:

    pytest -v --reruns 1 --html=report.html

    在配置文件中,我们可以这样配置:

    [pytest]
    # 命令行参数,用空格分隔
    addopts = -v --reruns 1 --html=report.html

    配置好后,我们在命令直接执行pytest就不需要在追加参数了

    testpaths-指定测试用例搜索目录

    testpaths用于指定测试用例的搜索目录,可以指定一个或多个目录,多个目录需要用空格隔开,需要注意的是,多个目录下不能存在相同名称py文件,否则会抛错。

     修改相同名称的py文件后的结构如下:

    将两个测试用例的目录添加到pytest.ini配置文件

    [pytest]
    # 读取测试用例的起始文件夹,多个路径用空格分隔。注意:这些目录下不能出现相同文件名,否则会报错
    testpaths = ./testcase ./testcase-copy

    执行结果如下:

    python_files & python_classes & python_functions 修改pytest默认搜索用例的规则

    pytest 默认的用例匹配规则:

    1. 测试模块必须以 test_ 开头或以 _test 结尾
    2. 测试类必须以 Test 开头,且不能有 __init__() 
    3. 测试方法必须以 test_ 开头

    pytest.ini配置文件可以使用python_files、python_calsses、python_functions修改默认的用例匹配规则。

    • 使用python_files可以自定义测试模块的匹配规则
    • 使用python_classes可以自定义测试类的匹配规则
    • 使用python_functions可以自定义测试方法的匹配规则

    上面3个配置项支持多个匹配规则,多个匹配规则用空格隔开。

    在了解配置字段后,我们添加自己的匹配规则:

    • 添加 my 开头的测试模块
    • 添加 My 开头的测试类
    • 添加 my 开头的测试方法
    [pytest]
    # 配置搜索的模块文件名称。匹配以test开头py结尾的文件
    python_files = test*.py my*.py
    
    # 配置搜索的测试类名
    python_classes = Test* My*
    
    # 配置搜索的测试方法名
    python_functions = test* my*

    执行结果

    markers-注册mark标记

    当我们使用 @pytest.mark.标记名称 时,如果使用的自定义标记,当在执行用例追加参数 -m=标记名称 时,虽然不会影响测试执行,但是在执行后会出现告警提示。

    我们可以在pytest.ini配置文件增加 markers 字段注册标记名称

    [pytest]
    # 注册标记名称
    markers =
        smoke: 冒烟测试用例
        normal: 正常用例

    添加后,使用pytest --markers可以查看到我们添加的标记名称。

    再次执行用例

    运行结果没有告警提示

  • 相关阅读:
    jquey插件开发
    平常问题传送门
    Angular1实战总结01:了不起的$cacheFactory
    node基础15:events模块
    node基础14:连接数据库
    node基础13:异步流程控制
    node基础12:动态网页
    node基础11:接受参数
    node基础10:处理异常
    IOS子视图超过父视图frame后,无法交互响应
  • 原文地址:https://www.cnblogs.com/testlearn/p/14705723.html
Copyright © 2020-2023  润新知