当前位置: 首页 > news >正文

pytest---添加自定义命令行参数(pytest_addoption )

前言

在目前互联网公司中,都会存在多个测试环境,那么当我们编写的自动化想要在多套测试环境下进行运行时,如何使用?大多数人想到的可能是通过将我们自动化代码中的地址修改成不同环境,但是这时候就会增加一些工作量,每次运行不同的环境,都需要进行再配置文件中进行修改地址,这样很不方面,今天小编介绍一种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 pytestdef 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的用途不仅仅只有这么多,具体如何使用,大家可以根据自己公司内容的项目进行结合使用。感谢您的阅读,希望本篇文章对您有所帮助。

相关文章:

pytest---添加自定义命令行参数(pytest_addoption )

前言 在目前互联网公司中,都会存在多个测试环境,那么当我们编写的自动化想要在多套测试环境下进行运行时,如何使用?大多数人想到的可能是通过将我们自动化代码中的地址修改成不同环境,但是这时候就会增加一些工作量&am…...

Flutter开发- iOS 问题CocoaPods not installed or not in valid state

解决问题方案: 1、先检查本机CocoaPods是否安装,通过gem list 查看是否安装 打开终端,执行gem list,出现图中的数据即为已安装。未安装看第4 步 2、已经安装了CocoaPods,还出现了图中的提示,你可能已经猜…...

leetcode 1207. 独一无二的出现次数

2023.9.2 我的思路是先将原数组的所有频率(即各元素出现的次数) 记录到数组frequency中&#xff0c;再遍历frequency数组看是否有重复的数&#xff0c;没有则返回true。 代码如下&#xff1a; class Solution { public:bool uniqueOccurrences(vector<int>& arr) {v…...

linux C编程 获取系统时间

1.clock_gettime #include<time.h> int clock_gettime(clockid_t clk_id,struct timespec *tp); struct timespec {time_t tv_sec; /* 秒*/long tv_nsec; /* 纳秒*/ }clk_id : CLOCK_BOOTTIME&#xff0c;以系统启动时间为时间原点的时间体系&#xff0c;不受其它因素的…...

Golang 中如何判断两个结构体相等

结论 golang中&#xff0c;哪些数据类型是可比较的&#xff0c;哪些是不可比较的&#xff1a; 可比较&#xff1a;Integer&#xff0c;Floating-point&#xff0c;String&#xff0c;Boolean&#xff0c;Complex(复数型)&#xff0c;Pointer&#xff0c;Channel&#xff0c;I…...

code 架构

目录 1. code 架构1.1. 代码质量的评判的维度1.2. 架构师1.3. 基础平台篇1. code 架构 1.1. 代码质量的评判的维度 可阅读性 (方便代码流转)可扩展性 / 可维护性(方便修改功能, 添加新功能)可测试性 (质量管理)可复用性 (简化后续功能开发的难度)1.2. 架构师 软件工程是一项非…...

Nuxt 菜鸟入门学习笔记五:CSS 样式

文章目录 本地样式表在组件内导入通过 Nuxt 配置 CSS 属性导入使用字体导入通过 NPM 发布的样式表 外部样式表动态添加样式表【高级】使用 Nitro 插件修改渲染的头部 使用预处理器单文件组件 SFC 样式类和样式绑定使用 v-bind 的动态样式Scoped StylesCSS Modules预处理器支持 …...

java企业工程管理系统源码之提高工程项目管理软件的效率

高效的工程项目管理软件不仅能够提高效率还应可以帮你节省成本提升利润 在工程行业中&#xff0c;管理不畅以及不良的项目执行&#xff0c;往往会导致项目延期、成本上升、回款拖后&#xff0c;最终导致项目整体盈利下降。企企管理云业财一体化的项目管理系统&#xff0c;确保…...

蓝桥杯 2240. 买钢笔和铅笔的方案数c++解法

最近才回学校。在家学习的计划不翼而飞。但是回到学校了&#xff0c;还是没有找回状态。 现在是大三了&#xff0c;之前和同学聊天&#xff0c;说才大三无论是干什么&#xff0c;考研&#xff0c;找工作&#xff0c;考公&#xff0c;考证书 还都是来的及的。 但是心里面…...

中间件环境搭建配置过程解读

中间件环境搭建 目录 中间件环境搭建xampp 搭建环境Tomcat环境配置安装mysql连接mysql 问题解决 xampp 搭建环境 安装xampp服务集成环境工具 官网地址下载项目压缩包&#xff0c;将项目文件夹放在xampp安装目录的htdocs文件夹下初始化xampp&#xff1a;运行目录内的setup_xamp…...

Pytest 自定义HOOK函数

除了系统提过的HOOK函数外&#xff0c;也可以通过自定义HOOK的方式实现想要的功能。 首先创建一个py文件&#xff0c;里面定义自己的HOOK函数&#xff0c;主要pytest里面的hook函数必须以pytest开头。 #myhook.pydef pytest_myhook(user):"""自定义HOOK函数&q…...

VUE笔记(六)vue路由

一、路由的简介 1、实现生活中的路由 路由&#xff1a;路由其实就是一个key-value对应关系 路由器&#xff1a;用于管理多个路由关系的设备被称为路由器 2、前端的路由 目前使用的前端项目都是单页面的应用&#xff08;SPA&#xff09;&#xff0c;一个项目中只有一个html页…...

nginx反向代理 负载均衡

目录 1.反向代理介绍&#xff1a; 2.七层代理和四层代理&#xff1a; 2.1 七层代理&#xff1a; 2.2 四层代理&#xff1a; 3.反向代理web服务器&#xff1a; 3.1 代理服务器配置&#xff1a; 3.2 服务器配置 &#xff1a; 3.3 客户端访问&#xff1a; 3.4 代理不同端口&am…...

hugging face inference API返回内容太短的问题

hugging face的inference api返回的内容默认很短&#xff0c;可以通过参数max_new_tokens进行设置&#xff1a; Detailed parameters When sending your request, you should send a JSON encoded payload. Here are all the options All parametersinputs (required):a str…...

react中redux的详细使用以及持久化处理

一.redux使用 1.安装 npm i redux 例一&#xff1a; 2.创建redux文件夹&#xff0c;store.js文件 store.js文件 import {legacy_createStore as createStore,combineReducers}from "redux" // 每一块状态内容对应一个reducer文件 import {CollApsedReducer} fro…...

论文笔记: 循环神经网络进行速度模型反演 (未完)

摘要: 分享对论文的理解, 原文见 Gabriel Fabien-Ouellet and Rahul Sarkar, Seismic velocity estimation: A deep recurrent neural-network approach. Geophysics (2020) U21–U29. 作者应该是领域专家, 对地球科学的理解胜于深度学习. 为方便讨论, 等式编号保持与原文一致.…...

多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比

多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比 目录 多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预…...

excel绘制直方图

Excel 2016直方图使用指南 excel绘制各种曲线十分方便&#xff0c;可以通过代码将计算的数据输出到excel里面&#xff0c;然后通过excel的插入标签&#xff0c;绘制各种需要的曲线。 对于直方图&#xff0c;横坐标是分布区间&#xff0c;纵坐标是这个区间内数值的频数&#x…...

react-grid-layout 实现原理介绍

简介 React-grid-layout 是一个基于 React 的网格布局库&#xff0c;它可以帮助我们轻松地在网格中管理和排列组件。它提供了一个直观的 API&#xff0c;可以通过配置网格的大小、列数和组件的位置来实现复杂的布局&#xff0c;还支持对网格中组件的拖拽和重新排列。 实现 诉…...

集合框架-(Collection/Map)

1.单列集合 1.1基础概要 集合中存储的是对象的地址信息&#xff0c;想要输出对象的信息&#xff0c;需要在具体的类中重写toString&#xff08;&#xff09;方法 Collection代表单列集合&#xff0c;每个元素数据只包含一个值 List集合&#xff1a;添加的元素可以是有序、可…...

终极GTA5安全增强菜单:YimMenu完整使用指南

终极GTA5安全增强菜单&#xff1a;YimMenu完整使用指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu Y…...

C++链接与符号管理

C链接与符号管理链接是将编译后的目标文件组合成可执行程序的过程。理解链接机制和符号管理对于解决链接错误和优化程序结构至关重要。外部链接允许符号在多个翻译单元间共享。#include extern int global_variable; extern void external_function();void external_linkage_ex…...

scikit-learn自定义Pipeline:从接口契约到业务落地的完整实践

1. 项目概述&#xff1a;为什么需要自己动手定制 scikit-learn 的模型与流水线在真实的数据科学项目里&#xff0c;你几乎不可能靠from sklearn.ensemble import RandomForestClassifier一行代码就搞定所有事。我带过十几个工业级建模项目&#xff0c;从电商价格预测到医疗设备…...

uml学习笔记(1)

UML学习笔记一&#xff1a;面向对象与UML基础入门 一、面向对象开发思想 两种开发范式对比 结构化方法&#xff1a;以功能、流程为核心拆分模块。逻辑简单直观&#xff0c;但复用性差、耦合度高、维护困难&#xff0c;不适合复杂大型项目。面向对象方法&#xff1a;以现实事物的…...

2026免费在线去水印软件怎么选?实测5款推荐+功能对比指南

为什么需要去水印工具&#xff1f; 在内容创作和日常使用中&#xff0c;水印是版权保护的重要标志&#xff0c;但有时我们需要处理自己拥有版权的内容或进行合法的编辑操作。无论是整理自己的工作素材、编辑设计稿&#xff0c;还是去除合法获取内容上的平台标记&#xff0c;都需…...

ElevenLabs陕西话语音落地实录:从零配置API到高保真秦腔语调还原,7步搞定方言TTS部署

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;ElevenLabs陕西话语音落地实录&#xff1a;从零配置API到高保真秦腔语调还原&#xff0c;7步搞定方言TTS部署 环境准备与API密钥获取 首先注册ElevenLabs账号并进入 Profile → API Keys页面&#xff0c;生成…...

摆脱论文困扰!!2026 最新降AIGC软件测评与推荐

2026年真正好用的AI论文降重与改写工具&#xff0c;核心看降重效果、去AI味、格式保留、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 …...

福州儿童康复推荐

当我们谈论儿童康复时&#xff0c;其实是在谈论一个家庭面对未知时的所有期许与不安。每一个孩子的成长节奏都值得被尊重&#xff0c;尤其是那些在语言、社交或行为上稍显“慢热”的小天使。在福州&#xff0c;有这样一处地方&#xff0c;它不追求“速成”&#xff0c;也不承诺…...

针对现在的AI模型的token中转转包业务的分析

&#x1f4ca; 价格优势深度分析 1. 价格差异全景图&#xff08;2026年实测数据&#xff09; 服务类型1亿Token价格价格倍差适用场景超低价陷阱1351倍个人测试、极低质量需求主流中转站800-1,5006-11倍中小企业、开发者合规服务商3,000-5,00022-37倍企业级应用、生产环境官方…...

2026年福建莆田大平层全屋高端定制选型指南

一、引言福建莆田近年来经济发展迅速&#xff0c;居民生活水平不断提高&#xff0c;大平层住宅逐渐成为高端改善型住房的热门选择。在全屋高端定制方面&#xff0c;消费者面临着众多品牌的选择。本指南旨在为莆田的大平层业主提供一份合规、靠谱且适配自身需求的高端定制品牌选…...