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 ...
随机推荐
- 重磅!Cloud Ace 首度于德国设立法人,作为拓展Google Cloud 欧洲整合市场的基础
[Cloud Ace - 谷歌云 | 亚太地区最多据点的Google Cloud经销商 ] Cloud Ace, Inc.(总部:东京都千代田区,代表:青木诚,以下简称 Cloud Ace)在20 ...
- SCI、SSCI、EI、北大中文核心期刊、CSCD、CSSC、SCD、CSSCI 扩展版、计算机软件著作权
https://zhidao.baidu.com/question/308484724.html SCI(科学引文索引).EI(工程索引).ISTP(科技会议录索引)是世界著名的三大科技文献检索系统, ...
- 2018GPLT
2018GPLT 7-1 天梯赛座位分配 一共有n所学校参加比赛,每所学校有\(a_i\)只队伍,每只队伍共10人,要保证每个学校的所有队员不能相邻就坐,令每一所学校的队伍排成一排纵列,然后从第一所学 ...
- [转载] MATLAB | RGB image representation
转载自https://www.geeksforgeeks.org/matlab-rgb-image-representation/ MATLAB | RGB image representation ...
- gitee上传VS2022已有项目
1.在gitee上新建仓库: 2.复制新建仓库地址: 3.用VS2022打开先有项目,找到Git更改项: 4.点击创建Git存储库: 5.创建本地仓库并推送到远程,点击创建并推送: 6.等待创建成功即 ...
- IDEA中引入smarttomcat后控制台输出乱码,运行跳转到浏览器
解决乱码 这里只讲一种解决方法,其他方法,百度即可 1.打开Tomcat文件,找到配置文件config 2.在配置文件中找到logging.properties 3.修改文中含有encoding的语句 ...
- nginx 日志分析之 access.log 格式详解
说明:access.log 的格式是可以自己自定义,输出的信息格式在nginx.conf中设置 一般默认配置如下: http { ... log_format main '$remote_addr - ...
- python的排序问题
python的排序方法有两个 1 nums.sort() # 原数组上排序, 没有返回值, nums变为有序 2 # 或者 3 nums = sorted(nums) # 原数组不变, 会返回一个排好 ...
- Linux下查找并杀死 zombile 和 stopped 进程
用top命令查看系统运行情况,突然发现stopped和zombile进程个数居然不是0. [root@myos software]# top top - 11:20:17 up 60 days, 17 ...
- vs2019 常用数据结构 纯C语言 头文件实现 (持续更新改错中)单链表,
1.单链表: 1 #pragma once 2 #ifndef _List_H 3 #include<stdio.h> 4 #include<stdlib.h> 5 #defi ...