Pytest_Hook函数pytest_addoption(parser):定义自己的命令行参数(14-1)
考虑场景:
- 我们的自动化用例需要支持在不同测试环境运行,有时候在dev环境运行,有时候在test环境运行;
- 有时候需要根据某个参数不同的参数值,执行不同的业务逻辑;
上面的场景我们都可以通过“在命令行中输入参数,然后用例中接收这个参数,通过判断这个参数的值来做不同的逻辑”来实现。那么我们的需求就变为pytest中如何自定义一个命令行参数呢?这时候我们就需要用到pytest的钩子函数:pytest_addoption
在conftest.py文件中定义命令名
新建一个conftest.py文件

然后在conftest.py文件中通过pytest_addoption方法来添加命令行参数,通过定义的fixture来获得参数的值。
import pytest # pytest_addoption(parser) 定义自己的命令行参数的固定写法
def pytest_addoption(parser):
# 定义 --env_opt 参数名
parser.addoption("--env_opt") # 定义 --run_level 参数名
# 参数说明:
# default:当命令行不调用参数时的默认值
# help:在帮助中显示的说明
parser.addoption("--run_level", default=1, help="执行用例的级别", action="store") # 获取--env_opt参数值
@pytest.fixture(scope="session")
def env_opt(request):
return request.config.getoption("--env_opt") # 获取--run_level参数值
@pytest.fixture(scope="session")
def run_level(request):
return request.config.getoption("run_level") @pytest.fixture(scope="session", autouse=True)
def start_appium_desired(env_opt, run_level):
print(f"\n{env_opt}")
print(f"\n{run_level}")
上面conftest.py中新增了两个命令行参数:--env_opt 和 --run_level,然后定义了两个fixture,在测试用例中想要获得参数 --env_opt 和 --run_level 的值,就可以调用 env_opt 或 run_level 函数获取对应的值。
在用例中获取定义命令的值
class TestDemo:
def test_001(self, env_opt):
print(f"\nenv_opt参数值:{env_opt}")
def test_002(self, run_level):
print(f"\nrun_level参数值:{run_level}")
调用定义的命令
import pytest
import os if __name__ == '__main__':
env = {
"host": "127.0.0.1",
"port": "6789"
} pytest.main(["-vs", "--alluredir=./temp", f"--env_opt={env}"])
os.system("allure generate ./temp -o ./report/ --clean")
执行结果

Pytest_Hook函数pytest_addoption(parser):定义自己的命令行参数(14-1)的更多相关文章
- getopt函数的使用——分析命令行参数
getopt(分析命令行参数) getopt(分析命令行参数) 短参数的定义 返回值 范例 getopt_long 相关函数表头文件#include<unistd.h> 函数声明int g ...
- 【转】getopt分析命令行参数
(一) 在Linux中,用命令行执行可执行文件时可能会涉及到给其加入不同的参数的问题,例如: ./a.out -a1234 -b432 -c -d 程序会根据读取的参数执行相应的操作,在C语言中,这个 ...
- getopt 分析命令行参数 -n -t 1
在Linux中,我们常常用到 ls -l 等等之类带有选项项的命令,下面,让我们用C++来实现该类似的命令. 在实现之前,首先,我们来介绍一下一个重要函数:getopt() 表头文件 #include ...
- getopt(分析命令行参数)
ref:http://vopit.blog.51cto.com/2400931/440453 相关函数表头文件 #include<unistd.h>定义函数 ...
- 3.QT中QCommandLineParser和QCommandLineOption解析命令行参数
1 新建项目 main.cpp #include <QCoreApplication> #include <QCommandLineParser> #include & ...
- python 命令行参数——argparse模块的使用
以下内容主要来自:http://wiki.jikexueyuan.com/project/explore-python/Standard-Modules/argparse.html argparse ...
- [日常] Go语言圣经-命令行参数
1.编译 go build hello.go 2.go get gopl.io/ch1/helloworld 命令,就会从网上获取代码,并放到对应目录中 下载的代码会放在$GOPATH/src/gop ...
- 转载:linux编程,命令行参数输入getopt
下面资料来自百度百科: getopt(分析命令行参数) 相关函数 表头文件 #include<unistd.h> 定义函数 int getopt(int argc,char * const ...
- golang-flag - 命令行参数解析
flag - 命令行参数解析 在写命令行程序(工具.server)时,对命令参数进行解析是常见的需求.各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用.如果命令行参数纯粹自己写代码解析, ...
随机推荐
- 【Linux】【Service】【OpenSSL】原理及实现
1. 概念 1.1. SSL(Secure Sockets Layer安全层套接字)/TLS(Transport Layer Security传输层套接字). 最常见的应用是在网站安全方面,用于htt ...
- CSS font-size: 0去除内联元素空白间隙
我们在编写HTML标签的时候,通常会使用换行,缩进来保证代码的可读性.同时,在编写CSS样式的时候,也会需要把一些元素设置为inline或inline-block.这样一来,有时在页面中会出现意外的空 ...
- 为什么企业全面云化需要IT战略支撑和驱动?
引子:为什么传统企业全面云化一直磨磨唧唧举步维艰? 笔者将企业上云大体上分为几个阶段: 第一个阶段是基础设施虚拟化.即将应用从物理机搬到(lift and shift migration)虚拟机上.基 ...
- 『与善仁』Appium基础 — 24、等待activity出现
目录 1.什么是等待activity出现 2.wait_activity()方法 3.获取当前页面的activity方法 4.综合练习 1.什么是等待activity出现 在启动APP的时候,要配置包 ...
- frp实现基于反向代理的内网穿透
个人博客主页: xzajyjs.cn frp是什么 简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP.TCP.UDP等众多协议 ...
- shell脚本 监控网卡信息
一.简介 源码地址 日期:2018/6/22 介绍:显示实时输入输出流量 效果图: 二.使用 适用:centos6+ 语言:英文 注意:无 下载 wget https://raw.githubuser ...
- supermarket(uaf)!!!!
在这道题目我花费了很长的时间去理解,因为绕进了死圈子 例行检查我就不放了 关键处在于选择5 使用了realloc,却没有让结构体指针node-> description正确指回去 (11条消息) ...
- [ZJCTF 2019]Login
学了一段时间的堆溢出现在继续做题, 例行检查一下 64位的程序放入ida中 shift+f12查看程序函数 可以看到非常明显的后门程序 查看主函数 发现了程序给的账号和密码,但是没有看到明显的栈溢出漏 ...
- 【密码学】AES简单学习
欧拉函数 公式 φ(n)=(p-1)(q-1) 小于x并且和x互质的数的个数 相关概念 因数:a*b=c 那么就称 a.b 是 c 的因数 素数:一个数如果除了1与它本身之外没有其他的因数,那么 ...
- Google Earth Engine 批量点击RUN任务,批量取消正在上传的任务
本文内容参考自: https://blog.csdn.net/qq_21567935/article/details/89061114 https://blog.csdn.net/qq_2156793 ...