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插件汇 ...
随机推荐
- MySQL 分表查询
分表是一种数据库分割技术,用于将大表拆分成多个小表,以提高数据库的性能和可管理性.在MySQL中,可以使用多种方法进行分表,例如基于范围.哈希或列表等.下面将详细介绍MySQL如何分表以及分表后如何进 ...
- idea如何显示出分支名
如图所示 配置修改 idea安装目录下bin/idea.properties文件,新增2行配置 project.tree.structure.show.url=false ide.tree.horiz ...
- 6.1 KMP算法搜索机器码
KMP算法是一种高效的字符串匹配算法,它的核心思想是利用已经匹配成功的子串前缀的信息,避免重复匹配,从而达到提高匹配效率的目的.KMP算法的核心是构建模式串的前缀数组Next,Next数组的意义是:当 ...
- 「codeforces - 1481F」AB Tree
link. 理一下逻辑,主要讲一下我做题时的疑惑和其它题解没提到的细节. 首先容易看到,一个必然不劣的贪心策略是把尽量靠近根的层铺成同样的字符.也许会有疑惑,字符串是否本质不同的判定每个位置地位相等. ...
- Oracle存储函数写法及调用
1.右键导航创建函数界面 2.返回值FunctionResult可自定义,当函数有输出函数时可不传数据,但需要设置返回(当提示未限定返回长度时,如代码示例设置255长度皆可): -------使用函数 ...
- Factors 分解质因数
package com.yourself.yours; import java.util.Scanner; /** ****************************************** ...
- mysql学习之数据备份和恢复
一.使用mysqldump进行备份 如:将test数据库备份到/tmp/mysql_back/目录下 [root@localhost tmp]# mysqldump -uroot -p111 -l - ...
- 导出所有容器id号
#!/bin/bash a=`docker ps|awk 'NR>1{print $1}'` FORMAT="%-12s\t,\t%-12s\t,\t%-12s\n" pri ...
- .net core中你的MD5用对了吗?
本文的项目环境为 .net 6.0 (.net 5.0 以上都支持) 在 .net 中获取字符串的 MD5 相信是非常容易的事情吧, 但是随便在网上搜一搜发现流传的版本还不少呢,比如: StringB ...
- P8816 [CSP-J 2022] 上升点列
Problem 考察算法:\(DP\). 题目简述 给你 \(n\) 个点,每个点有一个坐标 \((x_i,y_i)\),还可以添加 \(k\) 个点. 添加之后,求:最长的上升点列的长度. 上升点列 ...