前言
我们先来考虑一下如果存在下面场景,我们在不改变代码的情况实现:
- 一般来说公司存在几套环境,例如回归测试用例,我们需要在不同的环境进行测试,自动化用例有时候也需要支持在不同测试环境运行
我们可能想到:
- 配置文件里面指定,在不同环境运行之前,进行测试地址修改
- 在执行脚本命令时,动态带参数
本次我们讲解pytest框架的自定义命令行参数,也就是 在执行脚本命令时,动态带参数 这里需要用到:
- pytest_addoption 注册参数
- config.getoption 获取命令行参数
pytest_addoption 和 config.getoption详解
pytest框架本身使用示例:
def pytest_addoption(parser: Parser) -> None:
parser.addoption(
"--lsof",
action="store_true",
dest="lsof",
default=False,
help="run FD checks if lsof is available",
)
parser.addoption(
"--runpytest",
default="inprocess",
dest="runpytest",
choices=("inprocess", "subprocess"),
help=(
"run pytest sub runs in tests using an 'inprocess' "
"or 'subprocess' (python -m main) method"
),
)
parser.addoption() 常用参数说明:
- name:自定义命令行参数的名字,就配置为:"–foo"格式;
- action:默认action=“store”,只存储参数的值,可以存储任何类型的值,命令行参数多次使用也只能生效一个,最后一个值覆盖之前的值;
- default:默认值。
- choices:可以指定几个值,自定义参数必须在这几个值中选择一个,否则会报错;
- help:对参数作用的简要说明;
使用示例
一般写在 contest.py 文件里面:
""""
# @Time :2021/7/26 22:52
# @Author : king
# @File :conftest.py
# @Software :PyCharm
# @blog :https://blog.csdn.net/u010454117
# @WeChat Official Account: 【测试之路笔记】
"""
import pytest
hosts = {
"dev": "http://dev.xxxx.com",
"test": "http://test.xxxx.com",
"pre": "http://pre.xxxx.com",
"pro": "http://pro.xxxx.com",
}
def pytest_addoption(parser):
parser.addoption(
"--host",
action="store",
default="test",
choices=["dev", "test", "pre", "pro"],
help="dev:表示开发环境, \
test:表示测试环境, \
pre: 表示预发布环境,\
pro: 表示生产环境,\
默认test环境"
)
@pytest.fixture(scope='session')
def get_cmdopts(request):
if hosts.get(request.config.getoption("--host")):
return hosts.get(request.config.getoption("--host"))
test_addoptions.py 文件:
""""
# @Time :2021/7/26 20:51
# @Author : king
# @File :test_addoptions.py
# @Software :PyCharm
# @blog :https://blog.csdn.net/u010454117
# @WeChat Official Account: 【测试之路笔记】
"""
import pytest
def test_option(get_cmdopts):
print(get_cmdopts)
if __name__ == '__main__':
pytest.main()
输入pytest -s 查看执行结果: 输入pytest -s --host=pre 查看执行结果: 输入pytest -s --host=demo 查看执行结果: 结论:通过pytest_addoption 注册自定义参数和 使用config.getoption获取参数,就可以实现命令行动态获取参数
那别人怎么查看我们自己注册了那些参数呢?
我们可以通过pytest -h 查看自定义的参数:
总结
- pytest_addoption 注册自定义参数详解
- 使用config.getoption 获取自定义参数
- 查看自定义参数列表
以上为内容纯属个人理解,如有不足,欢迎各位大神指正,转载请注明出处!
如果觉得文章不错,欢迎关注微信公众号,微信公众号每天推送相关测试技术文章
|