pytest框架学习-pytest_addoption钩子函数
适用场景:一套自动化代码,多套环境。
pytest_addoption 允许用户自定义注册一个命令行参数,方便用户通过命令行参数的形式给 pytest 传递不同的参数进行不同测试场景的切换。
pytest_addoption 钩子函数一般和内置 fixture pytestconfig 配合使用, pytest_addoption 注册自定义的命令行参数, pytestconfig 通过pytest配置对象读取参数的值。
pytest_addoption 钩子函数还可以与内置fixture函数request中 request.config.getoption 结合使用来读取用户注册的自定义命令行参数对应的参数值。
opts:是要注册的命令行参数
可以看到,其他参数和add_argument()是一样的
咱们可以看官网解释:argparse --- 命令行选项、参数和子命令解析器 — Python 3.12.1 文档
注意:使用def pytest_addoption(parser) 需要放在conftest.py文件中
conftest.py中代码如下:
import pytest def pytest_addoption(parser):
"""
自定义命令行参数的名字,可以是:"foo", "-foo" 或 "--foo";
action:指明应当如何处理一个参数 'store', 'store_const', 'store_true', 'append', 'append_const', 'count', 'help', 'version'
nargs:参数可被使用的次数
const:存储一个常量值
default:默认为 None
type:自动将参数转换为给定的类型 int, float, argparse.FileType('w') 或可调用函数
choices:将值限制为指定的可选项集合
required:指明某个参数是必需的还是可选的 True 或 False
help:参数的帮助消息
metavar:要在帮助中显示的参数替代显示名称
dest:指定要在结果命名空间中使用的属性名称
"""
parser.addoption(
"--env", # 添加命令行参数--env,用来表示运行环境
action="store",
default="dev", # 默认为dev开发环境
choices=["test", "dev", "auto"], # name只能在这三个环境中选取,否则报错
help="选择运行环境") @pytest.fixture(scope='session')
def get_env(request):
"""
获取命令行参数--env的值,即获取运行环境
"""
name = request.config.getoption("--env")
return name
然后在测试用例文件中,可以作为参数引用
class TestRunForAddoption:
def test_normal_addoption(self, get_env):print(f"当前代码运行环境是:{get_env}")
pytest -sv -k 'test_normal_addoption'
此时没有传入命令行参数--env,可以看到,取得是默认值dev
pytest -sv -k 'test_normal_addoption' --env test
传入--env参数,并且赋值为test,可以看到,运行结果取值test
pytest -sv -k 'test_normal_addoption' --env uat
传入--env参数,赋值为uat,不在choices列表里,报错
pytest框架学习-pytest_addoption钩子函数的更多相关文章
- ucosIII学习笔记——钩子函数
一开始听见钩子函数感觉很莫名其妙,更不知道它有何作用,这是第一篇博客,也是学习ucosIII操作系统的一个开始吧. 在系统中有开发者自己创建的任务也有系统内部任务 ,UCOSIII中有五个系统任务,分 ...
- 『德不孤』Pytest框架 — 10、setUp()和tearDown()函数
目录 1.setUp()和tearDown()函数介绍 2.setUp()和tearDown()函数作用 3.setUp()和tearDown()函数说明 4.示例 (1)方法级 (2)类级 (3)函 ...
- pytest动态添加命令行参数并获取(钩子函数:pytest_addoption)
考虑场景: 我们的自动化用例需要支持在不同测试环境运行,有时候在dev环境运行,有时候在test环境运行: 有时候需要根据某个参数不同的参数值,执行不同的业务逻辑: 上面的场景我们都可以通过" ...
- vue学习目录 vue初识 this指向问题 vue组件传值 过滤器 钩子函数 路由 全家桶 脚手架 vuecli element-ui axios bus
vue学习目录 vue学习目录 Vue学习一之vue初识 Vue学习二之vue结合项目简单使用.this指向问题 Vue学习三之vue组件 Vue学习四之过滤器.钩子函数.路由.全家桶等 Vue学习之 ...
- day 84 Vue学习四之过滤器、钩子函数、路由、全家桶等
本节目录 一 vue过滤器 二 生命周期的钩子函数 三 vue的全家桶 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 Vue的过滤器 1 moment.js 在这里我们先介绍一个 ...
- flask框架基本使用(4)(钩子函数,异常,命令行运行)
flask 框架基本使用(1):https://www.cnblogs.com/chichung/p/9756935.html flask 框架基本使用(2):https://www.cnblogs. ...
- day 83 Vue学习四之过滤器、钩子函数、路由、全家桶等
Vue学习四之过滤器.钩子函数.路由.全家桶等 本节目录 一 vue过滤器 二 生命周期的钩子函数 三 vue的全家桶 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 Vue的过滤 ...
- 【js】vue 2.5.1 源码学习 (四) 钩子函数 资源选项 watch 的合并策略
大体思路 (三) 1.钩子函数 自定义策略 LIFECYCLE_HOOKS= [] created = [function(){} , function(){}] 组装方法 ...
- vue学习笔记(二)vue的生命周期和钩子函数
前言 通过上一章的学习,我们已经初步的了解了vue到底是什么东西,可以干什么,而这一篇博客主要介绍vue的生命周期和它常用的钩子函数,如果有学过java的园友可能有接触到在学习servlet的时候学过 ...
- Pytest单元测试框架-学习
pytest: Python的一个单元测试框架,基于UnitTest二次开发,语法上更加简洁,可以用来做Python开发项目的单元测试,UI自动化.接口自动化测试等,有很多的插件访问Pytest插件汇 ...
随机推荐
- 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(1)
在我们的SqlSugar的开发框架中,整合了Winform端.Vue3+ElementPlus的前端.以及基于UniApp+Vue+ThorUI的移动前端几个前端处理,基本上覆盖了我们日常的应用模式了 ...
- Remix-Ethereum IDE连接本地详解
Remix-Ethereum IDE连接本地 由于在学习和做项目的过程中,很多人用的都是网页版的Remix,而在网页中的代码是存储在缓存中的,在使用过程中容易丢失,所以将Remix与本地文件连接起 ...
- 研发效能|DevOps 是运维还是开发?
DevOps 到底是 Dev还是Ops?答:属于研发工程师序列,偏向研发域,而不是运维域. DevOps是研发工程师 DevOps 主要服务的对象就是所有产研团队的人员,与产研团队打交道比较多,相互配 ...
- 一文弄懂TypeScript中的混合
1.前言 由于TypeScrip中的类不支持多继承,所以引入了混合(Mixin)的特性,可以间接实现继承的效果. 2.正文 // 声明一个汽车类Vehicle,它有drive方法 class Vehi ...
- 入门篇-其之四-字符串String的简单使用
什么是字符串? 在Java编程语言中,字符串用于表示文本数据. 字符串(String)属于引用数据类型,根据String的源码,其头部使用class进行修饰,属于类,即引用数据类型. 字符串的表示 字 ...
- MySql 数据 管理表的操作
管理表的操作 use scoredb; -- 查看数据库中有哪些表 show tables; show tables from bipowernode; -- 查看数据表的基础结构 show colu ...
- Unexpected keys "@@dva", "user" found in preloadedState argument passed to createStore. Expected to find one of the known reducer keys instead: "router", "loading". Unexpected keys will be ignored.
Please use `require("history").DOMUtils` instead of `require("history/DOMUtils") ...
- umich cv-3-1
UMICH CV Neural Network 对于传统的线性分类器,分类效果并不好,所以这节引入了一个两层的神经网络,来帮助我们进行图像分类 可以看出它的结构十分简单,x作为输入层,经过max(0, ...
- IL编制器 --- Fody
介绍 这个项目的名称"Fody"来源于属于织巢鸟科(Ploceidae)的小鸟(Fody),本身意义为编织. 核心Fody引擎的代码库地址 :https://github.com/ ...
- VS Code C# 开发工具包正式发布
前言 微软于本月正式发布Visual Studio Code C#开发工具包,此前该开发套件已经以预览版的形式在6月份问世.经过4个月的测试和调整,微软修复了350多个问题,其中大部分是用户反馈导致的 ...