技术分享:如何用pytest_addoption切换自动化测试环境?

news2024/11/23 12:52:22

前言

在目前互联网公司中,都会存在多个测试环境,那么当我们编写的自动化想要在多套测试环境下进行运行时,如何使用?

大多数人想到的可能是通过将我们自动化代码中的地址修改成不同环境。

但是这时候就会增加一些工作量,每次运行不同的环境,都需要在配置文件中进行地址修改,这样很不方便。

今天小编介绍一种Pytest的钩子函数,这个函数可以帮助我们很容易的解决这个问题。

pytest_addoption

pytest_addoption是Pytest的钩子函数之一,用于为Pytest添加自定义选项,并将这些选项传递给测试用例。

可以通过修改Pytest的配置文件(pytest.ini)或使用命令行参数来设置这些选项。

pytest_addoption该函数一般需要和pytest的fixture内置函数request中的request.config.getoption(获取命令行参数信息)进行结合使用。

在上述问题中,我们可以通过在命令行参数中对测试环境地址进行修改,这样就可以在不修改配置文件的情况下,只通过命令行参数进行在不同的测试环境中执行相同的自动化代码。

def pytest_addoption(parser):

parser.addoption(

"--anjing",

action="store",

default="dev",

help="通过'anjing'添加自定义命令行参数名称"

)

参数介绍

pytest_addoption中常用到的一些参数介绍:

name:表示自定义命令行参数的名称,一般通过“--xxx”来使用;

action:表示命令行中遇到此参数时要采取的存储该参数对应的参数值的基本操作类型,默认为“store”;

default:表示如何命令行中没有传入该参数的值,则取默认值;

help:对参数作用的简介和说明。

使用方法

关于pytest_addoption的一些简介和用途已经介绍完毕了,接下来跟着小编一起查看如何使用pytest_addoption来解决我们的问题。

1、需要在conftest.py文件中进行创建一个pytest_addoption函数,对其进行设置对应参数类型。

2、通过pytest.fixture创建函数,获取命令行对应参数值。

3、通过编写测试用例中调用对应的函数名称。

4、命令行执行时,添加对应命令行参数。

小编先列举下conftest.py文件中关于pytest_addoption的编写:

#conftest.py文件

#coding:utf-8

import pytest

def pytest_addoption(parser):

parser.addoption(

"--anjing",action="store",default="anjing",help="将'anjing'添加到pytest的配置参数中"

)

parser.addoption(

"--env",action="store",default="dev",help="env:表示命令行参数内容,不填写默认输出default的值内容"

)

@pytest.fixture()

def anjing(request):

return request.config.getoption("--anjing")

@pytest.fixture()

def env(request):

return request.config.getoption("--env")

再根据conftest.py文件中的内容编写对应的测试用例:

#coding:utf-8

def test_01(anjing):

if anjing=='test':

print('命令行传参成功!')

else:

print('命令行取默认值!')

def test_02(env):

if env=='test':

print('传参成功!')

else:

print('传参失败!')

通过cmd执行时候,后续进行添加了对应的命令行参数值,这里小编是对两个命令行参数都添加了值,那么如果不添加值会怎么样呢?

通过执行结果可以看出来,当我们没有添加参数时,这里小编忘记打印返回值了,其实会实际输出默认值,就是我们在函数中设置的default。

我们上面使用的方法是通过XXX=XXX的格式来输出的,这里我们也可以通过--xxxx值,参数和值之间通过空格进行输入,结果都是一样的。

案例展示

上述小编是介绍了如何使用,那么我们如何在接口项目中使用呢?小编这里通过一个简单的方法通过项目进行展示,这里小编通过将默认值值变成了请求成功的url地址,添加参数为错误的url地址。

#conftest.py文件

#coding:utf-8

import pytest

def pytest_addoption(parser):

parser.addoption(

"--url",

action="store",

default="http://apis.juhe.cn/simpleWeather/query",

help="将'anjing'添加到pytest的配置参数中"

)

@pytest.fixture()

def anjing(request):

return request.config.getoption("--url")

conftest.py文件中我们将默认请求成功的地址写入到默认值中,然后继续编写接口请求地址,在添加一个命令行参数的函数。

#test_01.py文件

#coding:utf-8

import requests

def test_01(anjing):

data={

'city':"上海",

'key':'331eab8f3481f37868378fcdc76cb7cd'

}

r=requests.post(anjing,data=data)

result=r.json()['reason']

assert result=='查询成功!'

通过cmd进行运行程序,我们先不添加任何命令行参数,让其请求默认参数值的内容,发现测试用例请求成功了。

接下来我们通过随便在命令行参数后跟一个不正确的url地址,去模拟请求,这里肯定是无法请求成功的,因为我们请求的百度,不能请求成功(主要模拟测试环境场景)。

总结

小编通过简单的方法介绍了如何使用pytest_addoption进行来模拟不同测试环境下,我们如何进行执行我们的测试用例。

当然pytest_addoption的用途不仅仅只有这么多,具体如何使用,大家可以根据自己公司内容的项目进行结合使用。

感谢您的阅读,希望本篇文章对您有所帮助。

最后:

可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试持续集成、测试架构开发测试框架、性能测试等。

这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/767218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智安网络|移动安全的转型:零信任如何重新定义格局

数字化转型和远程/移动办公的常态化已经成为许多企业的现实。这一转变为企业带来了许多便利,但同时也引入了前所未有的风险,涉及员工的隐私、个人身份和特权访问凭证。尤其是在经济衰退和疫情的持续影响下,许多企业不得不在提高生产力的同时面…

260道网络安全工程师面试题汇总(附答题解析+配套资料)

由于我之前写了不少网络安全技术相关的文章和回答,不少读者朋友知道我是从事网络安全相关的工作,于是经常有人私信问我: 我刚入门网络安全,该怎么学? 想找网络安全工作,应该要怎么进行技术面试准备&…

Linux gdb汇编调试

文章目录 一、示例代码二、gdb汇编指令2.1 step/stepi2.2 next/nexti2.3 info registers2.4 set2.5 x2.6 rip寄存器2.7 rip 寄存器 参考资料 一、示例代码 &#xff08;1&#xff09; #include <stdio.h>int add(int a, int b) {return a b; }int main() {int a 3;in…

Linux安装或者升级cmake,例子为v3.10.2升级到v3.25.0(自己指定版本)

1. 引言 系统: ubuntu 1804 64位点我进入清华源-GCC链接: https://cmake.org/files/v3.25/ 先卸载自己电脑上的cmake。 cmake -version sudo apt-get autoremove cmake2. 下载编译指定版本cmake 可以根据自己的需求下载对应版本的cmake。 cd ~ && mkdir cmake &…

3Ds max图文教程:高精度篮球3D建模

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 第 1 步。使用以下设置在顶部视口上创建球体&#xff1a; 第 2 步。将球体转换为可编辑的多边形&#xff1a; 第 3 步。转到 Edge 子对象级别并剪切以下边缘&#xff1a; 第 4 步。选择以下边&#xff0c;然…

农产品后台管理系统(一)——项目总览

后端技术栈 SpringBoot2.xMybatis-plusMysql8.0redisjsoup&#xff08;测试爬取数据&#xff09; 前端技术栈 Vue3EchartsAxios前端组件&#xff1a;element-china-area-data、element-plus 项目概览截图 登录界面 注册界面 农产品发布界面 用户管理界面 用户画像界面 订单…

【JavaEE】Tomcat的安装和使用、创建Mevan项目使用Servlet写一个程序

目录 前言 一、Tomcat的下载和安装 二、写一个简单的Servlet项目 1、创建一个Maven项目 2、引入依赖 3、创建目录 4、编写Servlet代码。 5、打包程序 6、将程序部署到Tomcat上 7、验证程序运行结果 三、在IDEA上安装Smart Tomcat插件 四、Servlet中的一些常见错误 …

欧姆龙plc之间的以太网通讯

捷米特JM-ETH-CP转以太网模块控&#xff0c;用于欧姆龙 CP1L/ CP1E/ CP1H 系列 PLC 的以太网数据采集&#xff0c;非常方便构建生产管理系统。 支持 FINS/UDP、FINS/TCP 以太网协议通信&#xff0c;支持上位机软件&#xff08;组态王、MCGS、力控、KepWare OPC 服务器等&#…

怎么把pdf转换成jpg图片?这几种方法纯干货

怎么把pdf转换成jpg图片&#xff1f;PDF和JPG是两种常见的文件格式&#xff0c;它们各自有自己的应用场景和优势。PDF格式通常用于创建和共享文档&#xff0c;因为它可以保留文档中的格式和布局&#xff0c;而且可以在几乎所有设备上查看。JPG格式通常用于存储和共享图像文件&a…

5款实用的软件,能帮你解决一些工作和生活中的问题

​ 我乐于分享一些有用的软件给大家&#xff0c;让大家的工作更高效。今天&#xff0c;我要向大家推荐五款实用的软件&#xff0c;它们都能帮你解决一些工作和生活中的问题。 桌面整理——蜂窝桌面整理 ​ 蜂窝桌面整理是一个桌面整理软件&#xff0c;可以让你在桌面上创建和…

OpenCV for Python 学习第四天 :通道的获取与合并

上一篇博客&#xff0c;我们学习了如何通过更快的item()和itemset()的方法访问图片&#xff0c;以及了解了图像的兴趣位置的获取方法&#xff0c;那么今天&#xff0c;我们将学习通道的处理方法&#xff0c;通过通道的拆分和合并的实例&#xff0c;让大家更好的了解咱们有关于B…

论文解读:LaMa:Resolution-robust Large Mask Inpainting with Fourier Convolutions

论文&#xff1a;https://arxiv.org/pdf/2109.07161.pdf 代码&#xff1a; GitHub - advimman/lama: &#x1f999; LaMa Image Inpainting, Resolution-robust Large Mask Inpainting with Fourier Convolutions, WACV 2022 目录 1 摘要&#xff1a; 2 主要贡献&#xff…

Bland-Altman LOA:衡量测量方法一致性的统计分析方法,也可用来做分割评价指标

Bland-Altman LOA&#xff08;Limits of Agreement&#xff09;是一种用于评估两种测量方法一致性的常用统计分析方法。 在医学研究和临床实践中&#xff0c;我们经常会面临不同测量方法之间的比较和评估问题。为了确定两种测量方法是否能够得出相似的结果&#xff0c;我们需要…

D. Accommodation

Problem - 1804D - Codeforces 思路&#xff1a;首先我们可以统计一下开着灯的个数&#xff0c;对于一个卧室的来说&#xff0c; 不会存在让灯减少的情况&#xff0c;而对于两个卧室的来说&#xff0c;存在4种情况&#xff0c;00&#xff0c;01&#xff0c;10&#xff0c;11&am…

hosts文件锁定,如何修改hosts文件权限

hosts文件能够让我们配置域名和IP的映射关系&#xff0c;方便局域网的用户&#xff0c;可是有的用户想在hosts里添加修改&#xff0c;发现host文件被锁死&#xff0c;host文件左下角出现一个&#x1f512;&#xff0c;怎么办呢&#xff0c;如何修改hosts文件权限。 应用程序-实…

【DevOps】Atlassian插件开发指南

本文以Bamboo插件开发为例&#xff0c;记录一下插件开发过程。 一、简介 Atlassian Bamboo 6.9.1 是一款持续集成和持续交付&#xff08;CI/CD&#xff09;工具&#xff0c;支持使用插件扩展其功能。如果需要开发自己的 Bamboo 插件并添加到 Bamboo 中&#xff0c;则可以参考…

OpenCv之图像形态学(二)

目录 一、形态学梯度 二、顶帽操作 三、黑帽操作 一、形态学梯度 梯度原图 - 腐蚀腐蚀之后原图边缘变小&#xff0c;原图 - 腐蚀 就可以得到腐蚀掉的部分&#xff0c;即边缘 案例代码如下: import cv2 import numpy as np# 导入图片 img cv2.imread(6.jpg)# 注意调节kern…

nginx基础2——配置文件详解(网页配置篇)

文章目录 一、基本了解二、nginx.conf配置参数2.1 调试参数2.2 必配参数2.3 优化性能参数2.4 event{}段配置参数2.5 网络连接参数2.6 fastcgi配置参数2.7 总结常配参数 三、http{}段配置参数3.1 配置结构3.2 精简配置网页3.3 location定义网页3.3.1 root path用法3.3.1 alias p…

atc201(组合数学)+cf1400(溢水法)

C - Secret Number 题意&#xff1a;给你一个字符串&#xff0c;分别表示0-9的状态。求一个四位密码的组合有多少种。 O&#xff1a;表示密码一定有该数字。 X&#xff1a;表示密码一定没有该数字。 &#xff1f;&#xff1a;不确定密码里有没有&#xff0c;可能有可能没有&…

bgp联邦

1、ip配置 [r1-LoopBack0]ip address 192.168.1.1 24 [r1-LoopBack1]ip address 10.0.0.1 24 [r1-GigabitEthernet0/0/0]ip address 12.0.0.1 24[r2-GigabitEthernet0/0/0]ip address 12.0.0.2 24 [r2-GigabitEthernet0/0/1]ip address 172.16.1.1 29 [r2-GigabitEthernet0/0/…