pytest动态添加命令行参数并获取(钩子函数:pytest_addoption)
考虑场景:
- 我们的自动化用例需要支持在不同测试环境运行,有时候在dev环境运行,有时候在test环境运行;
- 有时候需要根据某个参数不同的参数值,执行不同的业务逻辑;
上面的场景我们都可以通过“在命令行中输入参数,然后用例中接收这个参数,通过判断这个参数的值来做不同的逻辑”来实现。那么我们的需求就变为pytest中如何自定义一个命令行参数呢?这时候我们就需要用到pytest的钩子函数:pytest_addoption
通过conftest.py配置
新建一个conftest.py文件,然后在conftest.py文件中通过pytest_addoption方法来添加命令行参数,通过定义的fixture来获得参数的值。
# file_name: conftest.py import pytest def pytest_addoption(parser):
parser.addoption(
"--cmdopt", action="store", default="type1", help="my option: type1 or type2"
)
parser.addoption(
"--env", action="store", default="dev", help="env:表示测试环境,默认dev环境"
) @pytest.fixture()
def cmdopt(pytestconfig):
return pytestconfig.getoption("cmdopt") @pytest.fixture()
def env(request):
return request.config.getoption("--env")
上面conftest.py文件中新增了两个命令行参数:--cmdopt和--env;然后定义了两个fixture,在测试用例中想要获得参数--cmdopt的值,就可以调用cmdopt函数;调用env函数可以获取参数--env的值。
编写测试用例:
# file_name: test_option.py import pytest def test_option(env):
if env == 'dev':
print("当前测试环境为:{},域名切换为开发环境".format(env))
elif env == 'test':
print("当前测试环境为:{},域名切换为测试环境".format(env))
else:
print("环境错误,当前环境{}不存在".format(env)) if __name__ == '__main__':
pytest.main(['-s', 'test_option.py'])
上面例子是获取env的值,针对env值的不同做不同的操作。
不带参数运行:
命令行中输入指令:pytest test_option.py -s,运行结果:
因为我们在conftest.py文件中定义的参数env的默认值为dev,所以当运行时命令行不传env参数,则使用默认值dev。
带参数运行:
命令行中输入指令:pytest test_option.py -s --env=test,运行结果:
从结果中可以看到,命令行中输入参数env=test,在测试用例中获取到通过fixture获取到env的值为test。
pytest动态添加命令行参数并获取(钩子函数:pytest_addoption)的更多相关文章
- 给go程序添加命令行参数
操作系统: CentOS 6.9_x64 go语言版本: 1.8.3 问题描述 需要应用程序根据不同的配置文件访问不同的服务器,希望程序启动时可以指定配置文件. 解决方案 package main i ...
- pytest框架之命令行参数1
前言 pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作.pytest提供了丰富的功能,包括assert重写,第三方插件,以及其他测试工具无法比拟的fixtur ...
- pytest框架之命令行参数2
前言 上篇博客说到命令行执行测试用例的部分参数如何使用?今天将继续更新其他一些命令选项的使用,和pytest收集测试用例的规则! pytest执行用例命令行参数 --collect-only:罗列出所 ...
- 命令行参数 main()函数设计
一.main()函数的形式 int main( void )--无参数形式 { ... return 0; } int main( int argc, char *argv[] )--带参数形式 { ...
- VS添加命令行参数main(int argc, char** argv)
- VS调试-添加命令行参数
Project -> Properties -> Configuration Properties -> Debugging 在Command Arguments里填上即可
- pycharm调试添加命令行参数
UI界面: Run->Edit Configurations->Parames
- visual studio 中添加命令行参数
argc argv
- Pytest(13)命令行参数--tb的使用
前言 pytest 使用命令行执行用例的时候,有些用例执行失败的时候,屏幕上会出现一大堆的报错内容,不方便快速查看是哪些用例失败. --tb=style 参数可以设置报错的时候回溯打印内容,可以设置参 ...
随机推荐
- Hadoop生态圈学习-1(理论基础)
一.大数据技术产生的背景 1. 计算机和信息技术(尤其是移动互联网)的迅猛发展和普及,行业应用系统的规模迅速扩大(用户数量和应用场景,比如facebook.淘宝.微信.银联.12306等),行业应用所 ...
- 基于阿里云ecs(centos 7) 安装jenkins
1. 安装好 jdk 2. 官网(https://pkg.jenkins.io/redhat-stable/)下载rpm包(稳定版): wget https://pkg.jenkins.io/redh ...
- matplotlib画直线图的基本用法
一 figure使用 1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 # 从-3到中取50个数 5 x = np.linspac ...
- Non-terminating decimal expansion; no exact representable decimal result.
Non-terminating decimal expansion; no exact representable decimal result. 翻译为:非终止十进制扩展; 没有确切的可表示的小数 ...
- Java知识点总结——IO流框架
IO框架 一.流的概念 概念:内存与存储设备之间传输数据的通道. 二.流的分类 按方向分类: 输入流:将<存储设备>中的内容读入到<内存>中 输出流:将<内存>中的 ...
- [源码解析] PyTorch 分布式(15) --- 使用分布式 RPC 框架实现参数服务器
[源码解析] PyTorch 分布式(15) --- 使用分布式 RPC 框架实现参数服务器 目录 [源码解析] PyTorch 分布式(15) --- 使用分布式 RPC 框架实现参数服务器 0x0 ...
- 第四届“传智杯”全国大学生IT技能大赛题解
目录 A B C D E F G 今年题目难度普遍偏低.只有 D,F 还好. A 按题目给的公式计算即可.注意应在最后的答案中去掉小数部分. B 按照题意模拟即可.注意答案要与 \(0\) 取 \(\ ...
- CF208A Dubstep 题解
Content 有一个字符串被变换了.其中在这个字符串的前面加了 \(\geqslant 0\) 个 WUB,每个单词(由空格间隔)之间加了 \(\geqslant 1\) 个 WUB,在这个字符串的 ...
- java web 404错误页面配置
java web 404错误页面配置:注意红框的地方,在工程的web.xml文件里的最开头加入如下的内容便可,但是也有问题,针对以.action后缀名和.jsp后缀名不起作用, 因为后面配置了一些拦截 ...
- input type 使用
type属性值 hidden: 隐藏. text:文本 search:搜索 tel url email password:密码 date:日期选择器 month:月份选择器 week:周选择器 tim ...