pytest文档64-内置 pytestconfig 动态添加和获取 pytest.ini 配置参数

前言

前面讲 pytestconfig 的时候,可以获取到 pytest.ini 里面的配置参数。
我们在写项目自动化用例的时候,有一些配置参数希望能加到配置里面,如configid, productid,以及测试环境的base_url地址,和账号相关信息。

addini的源码阅读

addini有四个参数:name, help, type=None, default=None

def addini(self, name, help, type=None, default=None):
""" register an ini-file option.

:name: name of the ini-variable
:type: type of the variable, can be ``pathlist``, ``args``, ``linelist``
or ``bool``.
:default: default value if no ini-file option exists but is queried.

The value of ini-variables can be retrieved via a call to
:py:func:`config.getini(name) <_pytest.config.Config.getini>`.
"""
assert type in (None, "pathlist", "args", "linelist", "bool")
self._inidict[name] = (help, type, default)
self._ininames.append(name)

动态添加配置信息

前面一篇讲添加命令行参数,可以用 addoption 来添加命令行参数,这里我们是添加 pytest.ini 的配置信息
adddini里面参数说明

  • 第一个’url’ 是参数的名称

  • type      是类型,默认None,可以设置:

    None, “pathlist”, “args”, “linelist”, “bool”

  • default   是设置的默认值

  • help      是设置帮助文档,方便查阅

# conftest.py
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

def pytest_addoption(parser):
parser.addoption(
"--cmdopt", action="store", default="type1", help="my option: type1 or type2"
)
# 添加参数到pytest.ini
parser.addini('url', type=None, default="http://49.235.92.12:8200/", help='添加 url 访问地址参数')

# 获取 pytest.ini 配置参数
@pytest.fixture(scope="session")
def home_url(pytestconfig):
url = pytestconfig.getini('url')
print("\n读取到配置文件的url地址:%s" % url)
return url

参数用例传 home_url

# test_y.py

def test_h(home_url):
print("用例:%s" % home_url)

运行结果

============================= test session starts =============================
platform win32 -- Python 3.6.6, pytest-4.5.0, py-1.9.0, pluggy-0.13.1
rootdir: D:\wangyiyun\web
collected 1 item

..\..\..\..\..\wangyiyun\web\test_y.py
读取到配置文件的url地址:http://49.235.92.12:8200/
用例:http://49.235.92.12:8200/
.

========================== 1 passed in 0.02 seconds ===========================

pytest.ini 配置 url地址

如果有一天我们的测试环境发生了改变,这时候不需要去改代码,只需在 pytest.ini 配置一个环境地址

[pytest]

url = https://www.cnblogs.com/yoyoketang/

重新运行,我们得到的结果是

============================= test session starts =============================
platform win32 -- Python 3.6.6, pytest-4.5.0, py-1.9.0, pluggy-0.13.1
rootdir: D:\wangyiyun\web
collected 1 item

..\..\..\..\..\wangyiyun\test_y.py
读取到配置文件的url地址:https://www.cnblogs.com/yoyoketang/
用例:https://www.cnblogs.com/yoyoketang/
.

========================== 1 passed in 0.02 seconds ===========================

type参数的几种类型

默认None,可以设置:None, “pathlist”, “args”, “linelist”, “bool”

  • type=None  默认读的是字符串

  • type=”pathlist”   可以设置多个路径,会自动拼接ini文件这一层目录

  • type=”args”       多个参数

  • type=”linelist”   可以是多个命令行参数

  • type=”bool”       bool值,设置1或0

2020年第五期《python接口自动化+测试开发》课程,10月11号开学(火热报名中!)
本期上课时间:10月11号-1月3号,每周六、周日晚上20:30-22:30

(0)

相关推荐

  • pytest参数化-读取excel allure报告展示

    由于近期公司要求项目接口自动化且使用参数化.装饰器等,我在网上查了一下资料,现在整理下,放便以后代码套用 版本: pytest==6.2.1 pytest-html ==2.1.1 pyyaml == ...

  • pytest文档74-参数化parametrize加marks标记(pytest.param)

    前言 pytest 使用 parametrize 参数化的时候,有多组测试数据,需要对其中的一些测试数据加标记跳过,可以用pytest.param实现. pytest.param 先看下 pytest ...

  • pytest文档63-内置fixture之pytestconfig

    前言 前面讲 request 是pytest的一个内置 fixture ,作用是获取测试的上下文,可以通过request.config 获取配置对象. pytestconfig 的作用跟 reques ...

  • pytest文档18-配置文件pytest.ini

    前言 pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行. ini配置文件 pytest里面有些文件是非test文件 py ...

  • pytest文档44-allure.dynamic动态生成用例标题

    前言 pytest 结合 allure 描述用例的时候我们一般使用 @allure.title 和 @allure.description 描述测试用例的标题和详情. 在用例里面也可以动态更新标题和详 ...

  • pytest文档51-内置fixture之cache使用

    前言 pytest 运行完用例之后会生成一个 .pytest_cache 的缓存文件夹,用于记录用例的ids和上一次失败的用例. 方便我们在运行用例的时候加上-lf 和 -ff 参数,快速运行上一次失 ...

  • pytest文档62-内置fixture之request

    前言 request 是 pytest 的内置 fixture , "为请求对象提供对请求测试上下文的访问权,并且在fixture被间接参数化的情况下具有可选的"param&quo ...

  • pytest文档65-内置 request 读取项目的根目录 rootdir

    前言 写自动化测试项目的时候,经常要用到配置文件,比如读取数据库相关的配置,希望单独放到 config 配置文件,方便维护. pytest 的内置 fixture 可以获取到配置相关的信息,reque ...

  • pytest文档1-环境准备与入门

    前言 首先说下为什么要学pytest,在此之前相信大家已经掌握了python里面的unittest单元测试框架,那再学一个框架肯定是需要学习时间成本的. 刚开始我的内心是拒绝的,我想我用unittes ...

  • pytest文档2-用例运行规则

    用例设计原则 文件名以test_*.py文件和*_test.py 以test_开头的函数 以Test开头的类 以test_开头的方法 所有的包pakege必须要有__init__.py文件 help帮 ...