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 ...
随机推荐
- java方法的笔记
方法 方法的概念 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集 注意: 方法必须先创建才可以使用,该过程成为方法定义 方法创建后并不是直接可以运行的,需要手动 ...
- What does int main(int argc, char *argv[]) mean?
忽然发现自己不理解许多代码中这行的含义是什么...(汗颜) 下面贴一段stackoverflow上面的回答: argv and argc are how command line arguments ...
- H5云图后台读写CAD文件-在线CAD,网页CAD,网页浏览编辑CAD
说明 后台提供MxFileConvert.exe程序,它可以将CAD图纸转换成前台能加载显示的格式,程序调用方法见: https://help.mxdraw.com/?pid=32中的"如何 ...
- Vue2 element-ui组件二封-表单组件-效果展示
vue2已经落后了? 不着急, vue3的也在写的过程中, 只是发出来vue2的一些组件 系列说明: > 编写原因 vue2在很多人眼里已经快过时了, 而我一直想写一些总结, 但是从两年前到现在 ...
- DataTable操作汇总
1.排序 DataTable dt = new DataTable(); dt.Columns.Add("Name"); dt.Columns.Add("Age" ...
- mybatis -plus基础
- SPI接口(续二)
接下来看SPI接收器数据寄存器RXDAT,下表是它的全部位结构,其地址分别为0x40058014(SPI0).0x4005C014(SPI1). (1)第0到15位(RXDAT)为接收器数据,它包含接 ...
- 实践:带您用多种姿势将存储在腾讯云COS 上的视频播放
导语 随着5G时代的到来,短视频/直播行业开始流行,音视频逐渐成为信息传播中流量占比最大的部分.腾讯云对象存储(COS)作为可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务,早已不 ...
- css如何将content、background、background-image生成的背景进行翻转
方法 transform: scaleX(-1); 本例是水平翻转180度,方向可修改X为Y/Z. 注意如果是content,需要设置display: inline-block/block;
- Java本地缓存解决方案---使用Google的CacheBuilder
一.背景 当业务实现上需要用到本地缓存,来解决一些数据量相对较小但是频繁访问数据的场景,可以采用Google的CacheBuilder解决方案. 二.代码实现 1. 首先在maven中引入下面的包 & ...