Python-pytest -> 在自动化测试中,如何切换不同的测试环境
在构建自动化测试的脚本时候,我们可能会有不同环境的测试需求,如何实现在不同的测试环境之间切换呢?接下来介绍的这种方法,可以自定义命令行参数,从而根据不同的参数值实现不同环境的切换。
解决办法:
使用hook 钩子函数之addoption:
step1: 在项目的根目录下,创建conftest.py文件(名字是指定的,不要改动)
step2: 在此文件中,定义pytest_addoption方法,定义的内容参考如下:
import pytest
# Register argparse-style options and ini-style config values, called once at the beginning of a test run.
def pytest_addoption(parser):
parser.addoption(
"--name",
action="store",
default="Test name",
help="default value for argument name",
)
参数说明:
- name:自定义命令行参数的名字,可以是:"xx", "-xx" 或 "--xx"
- action:在命令行中遇到此参数时要采取的基本操作类型
- - store:默认,只存储参数的值,可以存储任何类型的值,此时 default 也可以是任何类型的值,而且命令行参数多次使用也只能生效一个,最后一个值覆盖之前的值
- - append:存储一个列表,用 append 模式将可以同时多次使用自定义参数,并且 default 默认值必须是一个列表,pytest 会把 default 默认参数的值和多个自定义参数的值放在一个列表中
- - store_const:用 const 为命令行参数指定一个常量值,必须和 const 参数同时使用,使用这个模式后命令行参数不能赋值
- default:如果参数的值不在命令行中,则使用默认值
- help:对参数作用的简要说明
【注】: 其他的参数可以详细参考第一个链接
step3: 定义方法以获取自定义参数的值:
# 使用request.config.getoption("--命令行")获取命令行参数的值
@pytest.fixture(scope="session")
def get_env(request):
"""从配置对象中读取自定义参数的值"""
return request.config.getoption("--name")
【注】: 通过 request.config.getoption("--env_opt") 来获取参数名为"--env_opt"的参数值。(可写在一个方法里,全局调用就可以获取到)
step4: 全局调用get_env方法,可以直接获取到自定以参数的值。
【注】: 如果想要添加不同的自定义参数,可以在之前定义的pytest_addoption方法中,继续添加,比如:
import pytest
def pytest_addoption(parser):
parser.addoption(
"--name",
action="store",
default="Test name",
help="default value for argument name",
)
parser.addoption(
"--env_opt",
action="store",
default="dev",
help="default value for the current running environment",
)
@pytest.fixture(scope="session")
def get_env(request):
"""从配置对象中读取自定义参数的值"""
return request.config.getoption("--name")
@pytest.fixture(scope="session")
def get_env(request):
"""从配置对象中读取自定义参数的值"""
return request.config.getoption("--env_opt")
参考链接:
- pytest自动化测试执行环境切换的两种解决方案 - 小公瑾 - 博客园 (cnblogs.com)
- Pytest_Hook函数pytest_addoption(parser):定义自己的命令行参数(14-1) - 不自在 - 博客园 (cnblogs.com) (最有启发)
- pytest中pytest_addoption用法 动态添加命令行参数 (钩子函数)_一叶知秋的BLOG的博客-CSDN博客
- pytest中pytest_addoption用法_旅途上的背包客的博客-CSDN博客
- 【pytest】Hook 方法之 pytest_addoption :注册命令行参数_waitan2018的博客-CSDN博客_pytest pytest_addoption
- (官网)API Reference — pytest documentation
Python-pytest -> 在自动化测试中,如何切换不同的测试环境的更多相关文章
- python的unittest框架中如何删除测试数据,清理环境,可以通过addCleanup函数
def addCleanup(self, function, *args, **kwargs): """Add a function, with arguments, t ...
- 关于Selenium3+python3.6自动化测试中iframe切换
本篇内容主要表述以下几个问题: 1.iframe 这个是什么? 2.定位iframe 标签时遇到的几个报错总结. 3.显示等待与隐示等待的原理与优缺点. 4.无name,ID可变情况下的处理方式 5. ...
- 基于python语言的自动化测试中生成html的测试报告时HtmlTestRunner模块常见问题
一.导入了HTMLTestRunner模块,报错:No module named StringIO,在python3.x中确实没有,在第94行引入的名称改成import io,539行要改成self. ...
- Appium移动端自动化测试--搭建模拟器和真机测试环境
详细介绍安装Android Studio及Android SDK.安装Appium Server. 文章目录如下 目录 文章目录如下 模拟器--安装Android Studio及Android SDK ...
- vue+element 切换正式和测试环境
1.package.json { "name": "element-starter", "description": "A Vue ...
- 无需编译app切换线上、测试环境
在咱们测试过程中,经常需要切换测试环境和线上环境.大致有如下几个方案. 一.服务器地址编译到app中 此种方式需要在代码里保存两套配置,一套指向线上,一套指向测试.通过编译参数分别生成测试包.线上包. ...
- python+pytest接口自动化(16)-接口自动化项目中日志的使用 (使用loguru模块)
通过上篇文章日志管理模块loguru简介,我们已经知道了loguru日志记录模块的简单使用.在自动化测试项目中,一般都需要通过记录日志的方式来确定项目运行的状态及结果,以方便定位问题. 这篇文章我们使 ...
- Debian中如何切换默认Python版本
当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Python 版本,因此系统中会存在多个 Python 的可执行二进制文件,你可以按照以下方法使用 ls 命令来查看你的系 ...
- Python+selenium自动化测试中Windows窗口跳转方法
Python+selenium自动化测试中Windows窗口跳转方法 #第一种方法 #获得当前窗口 nowhandle=driver.current_window_handle #打开弹窗 drive ...
- 【Python】【自动化测试】【pytest】
https://docs.pytest.org/en/latest/getting-started.html#create-your-first-test http://www.testclass.n ...
随机推荐
- 快速排序(QuiteSort)
快速排序算法(QuiteSort)是基于分治策略的一个算法.其基本算法是,对于输入的子数组a[p,r],按以下3个步骤进行排序: (1)分解(divide):以 a[p]为基准元素将a[p:r]划分成 ...
- ZIAO日报 202302
2023.2 2023年2月14日 10:23 2023.2.14 继续读<Multi-View Transformer for 3D Visual Grounding>,读到了relat ...
- 001. html篇之《基础内容》
html基础内容 1. 什么是html Hypertext Markup Language 超文本标记语言 2. 基本结构 <!DOCTYPE html> <!-- 此为html5的 ...
- npm vue-router安装报错
因为2022年2月7日以后,vue-router的默认版本,为4版本,而且 vue-router4,只能在vue3中,只有vue-router3中,能用在vue 2中 如果把vue-router4强制 ...
- CAD安装失败,如何才能删除(卸载)CAD?三步完美卸载CAD软件
CAD安装失败,怎么样才能彻底删除CAD各种残留注册表?有时候我们想将CAD重新安装,但却显示CAD已经安装,但又不见CAD软件程序文件,然后我们就会产生这样的疑问:CAD无法重新安装是怎么一回事?下 ...
- chatGPT-meta抗衡版本
chatGPT-meta抗衡版本 链接:https://mp.weixin.qq.com/s/MbZTfVgxx221Eo9pl1h80w 内置 git代码 LLaMA 项目地址:https://gi ...
- drupal clean url 配置
使用 find / -name "apachectl"查找文件目录下执行 ./apachectl -v 转载于:https://www.cnblogs.com/thinkingth ...
- SCI论文写作技巧-introduction和related works
introduction怎么写 a)背景介绍,现状(介绍别人研究),存在问题,怎样解决,我的做法,有何亮点 b)研究背景和重要性.引出该领域科研空白.点题-指出本文的研究课题.概述文章的核心方法论和主 ...
- GitBook的使用备忘
GitBook环境搭建 npm install -g gitbook-cli # 新建目录,如helloworld cd helloworld # 执行此语句,需等待一段时间 gitbook init ...
- springboot集成es7(基于high level client)
环境: ES: 7.12.0 1.springboot工程引入es相关jar <dependency> <groupId>org.elasticsearch</group ...