Pytest插件之pytest-base-url切换测试环境
Pytest插件之pytest-base-url切换测试环境
安装
pip install pytest-base-url
应用场景
利用参数--base-url或者配置(pytest.ini中base_url)来切换url
用法:命令行参数
测试代码:类似于fixture
#test_baseurl.py
import requests
def test_baseurl(base_url): #注意跟命令行的差别,下划线还是-
assert requests.get(base_url).status_code == 200命令行
pytest --base-url https://www.songqinnet.com/ test_baseurl.py
一种典型的错误
from selenium import webdriver
import pytest
def test_a01(base_url):
driver = webdriver.Chrome()
driver.get(base_url)
from time import sleep
sleep(5)
#错误的做法,参数合并到一起
if __name__ == '__main__':
pytest.main(['-sv','--base-url https://cn.bing.com',__file__])
#报这个错
#INTERNALERROR> OSError: [WinError 123] 文件名、目录名或卷标语法不正确。: 'D:\\pythonProject\\AutoTest\\PublicLessson\\pytest常用插件实例演示\\test_baseurl\\--base-url https:\\cn.bing.com'
#正确的做法,参数分开写,当然在命令行执行是ok的,不会有二义性
if __name__ == '__main__':
pytest.main(['-sv','--base-url','https://www.baidu.com',__file__])
用法:pytest.ini
pytest.ini示例
[pytest]
base_url = https://www.songqinnet.com/不要加引号
源码解读
pytest-base-url插件极其简单,是用来学习插件编写的非常好的DEMO
D:\Python39\Lib\site-packages\pytest_base_url\plugin.py
从源码可以看出
base_url就是个fixture(前文提到类似fixture),看了源码你能肯定了
_verify_url是自动生效的
pytest_addoption中加了一些参数,是的多数插件都会去加一些命令行参数
--base-url
--verify-base-url
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import os
import pytest
@pytest.fixture(scope="session")
def base_url(request):
"""Return a base URL"""
config = request.config
base_url = config.getoption("base_url")
if base_url is not None:
return base_url
@pytest.fixture(scope="session", autouse=True)
def _verify_url(request, base_url):
"""Verifies the base URL"""
verify = request.config.option.verify_base_url
if base_url and verify:
# Lazy load requests to reduce cost for tests that don't use the plugin
import requests
from requests.packages.urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter
session = requests.Session()
retries = Retry(backoff_factor=0.1, status_forcelist=[500, 502, 503, 504])
session.mount(base_url, HTTPAdapter(max_retries=retries))
session.get(base_url)
def pytest_configure(config):
if hasattr(config, "workerinput"):
return # don't run configure on xdist worker nodes
base_url = config.getoption("base_url") or config.getini("base_url")
if base_url is not None:
config.option.base_url = base_url
if hasattr(config, "_metadata"):
config._metadata["Base URL"] = base_url
def pytest_report_header(config, startdir):
base_url = config.getoption("base_url")
if base_url:
return "baseurl: {0}".format(base_url)
def pytest_addoption(parser):
parser.addini("base_url", help="base url for the application under test.")
parser.addoption(
"--base-url",
metavar="url",
default=os.getenv("PYTEST_BASE_URL", None),
help="base url for the application under test.",
)
parser.addoption(
"--verify-base-url",
action="store_true",
default=not os.getenv("VERIFY_BASE_URL", "false").lower() == "false",
help="verify the base url.",
)
Pytest插件之pytest-base-url切换测试环境的更多相关文章
- pytest.8.使用pytest做简单的接口测试
From: http://www.testclass.net/pytest/test_api/ 背景 我们现在需要测试v2ex网站的查看论坛节点信息的api.具体如下: 节点信息 获得指定节点的名字, ...
- iOS如何在一个包上切换正式环境和测试环境
最近项目处于测试阶段,所以免不了每天都得打包给测试人员,由于我们公司规模比较大,项目环境也分为了三种:测试环境.预上线(预生产)环境.上线(生产)环境.所以每到了测试后期,每天打包的时间也占了不少,遇 ...
- 无需编译app切换线上、测试环境
在咱们测试过程中,经常需要切换测试环境和线上环境.大致有如下几个方案. 一.服务器地址编译到app中 此种方式需要在代码里保存两套配置,一套指向线上,一套指向测试.通过编译参数分别生成测试包.线上包. ...
- 《吐血整理》高级系列教程-吃透Fiddler抓包教程(25)-Fiddler如何优雅地在正式和测试环境之间来回切换-下篇
1.简介 在开发或者测试的过程中,由于项目环境比较多,往往需要来来回回地反复切换,那么如何优雅地切换呢?宏哥今天介绍几种方法供小伙伴或者童鞋们进行参考. 2.实际工作场景 2.1问题场景 (1)已发布 ...
- 【测试环境】java|jdk|ant
很多文章都有写啊,我只是汇总一下:现在java已经是1.7+了,但是我们很多的时候开发环境还是在1.5.16左右,需要自己去配置: 0.为了方便切换测试环境,我们可以把jdk放到一个比较固定的位置.比 ...
- pytest一:pytest 框架介绍
pytest 是 python 的一种单元测试框架,与python 自带的 unittest测试框架类似,但是比 unittest 框架使用起来更简洁,效率更高.根据pytest 的官方网站介绍,它具 ...
- pytest系列(四)- pytest+allure+jenkins - 持续集成平台生成allure报告
pytest是什么 pytest是python的一款测试框架,拥有unittest的功能并比它更丰富. allure是什么 有非常多的优秀的测试框架,但却是有非常少优秀的报告工具可以展示非常清楚的用例 ...
- 《吐血整理》高级系列教程-吃透Fiddler抓包教程(24)-Fiddler如何优雅地在正式和测试环境之间来回切换-中篇
1.简介 在开发或者测试的过程中,由于项目环境比较多,往往需要来来回回地反复切换,那么如何优雅地切换呢?宏哥今天介绍几种方法供小伙伴或者童鞋们进行参考. 2.实际工作场景 2.1问题场景 (1)已发布 ...
- 转 通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换
软件开发的一般流程为工程师开发 -> 测试 -> 上线,因此就涉及到三个不同的环境,开发环境.测试环境以及生产环境,通常 ...
- 第一篇 Postman的初级使用之设置环境快速切换生成环境与测试环境
POSTMAN是有谷歌的开源工具,在开发调试.测试执行过程中使用频率非常广泛,本文将记录一些postman在测试中常见的一些配置和使用方法 一.基本的页面区域 略,很简单,大家都会看,再有,学习下面的 ...
随机推荐
- LoadRunner11脚本小技能之添加请求头+定义变量+响应内容乱码转换打印+事务拆分
一.添加请求头 存在一些接口,发送请求时需要进行权限验证.登录验证(不加请求头时运行脚本,接口可能会报401等等),所以需要在脚本中给对应请求添加请求头.注意:请求头需在请求前添加,包含url类.su ...
- .NET7 gRPC JSON转码+OpenAPI
gRPC JSON转码 gRPC JSON 转码允许浏览器应用调用 gRPC 服务,就像它们是使用 JSON 的 RESTful API 一样. 浏览器应用不需要生成 gRPC 客户端或了解 gRPC ...
- windows socket网络编程--事件选择模型
目录 事件选择模型概述 API详解 工作原理 代码实现 事件选择模型概述 Winsock提供了另一种有用的异步事件通知I/O模型--WSAEventSelect模型.这个模型与WSAAsyncSele ...
- Phalcon notes
1. 半原生数据查询: echo $realUser->getReadConnection()->getSQLStatement();die;
- label studio 结合 MMDetection 实现数据集自动标记、模型迭代训练的闭环
前言 一个 AI 方向的朋友因为标数据集发了篇 SCI 论文,看着他标了两个多月的数据集这么辛苦,就想着人工智能都能站在围棋巅峰了,难道不能动动小手为自己标数据吗?查了一下还真有一些能够满足此需求的框 ...
- 07#Web 实战:实现 GitHub 个人主页项目拖拽排序
实现效果图 GitHub 和 Gitee 个人主页中可以对自己的项目进行拖拽排序,于是我就想自己实现一个.本随笔只是记录一下大概的实现思路,如果感兴趣的小伙伴可以通过代码和本随笔的说明去理解实现过程. ...
- 一次MTU问题导致的RDS访问故障
导语 VPN是一种通过公网连接两个或多个私网站点的专用网络,使得这些站点仿佛是通过专线连接在一起.IPSec是一套协议框架,用于保证数据传输的私密性,完整性,真实性.但是VPN网络经常会带来一些连通性 ...
- Fastjson漏洞+复现
1.漏洞介绍 FastJson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性.通过查找代码中相关的方法,即可构造出一些恶意利用链. ...
- JavaEE Day14 Servlet&HTTP&Request
今日内容 1.Servlet 2.HTTP协议 3.Request 一.Servlet 1.概念 2.步骤 3.执行原理 4.生命周期 5.Servlet 3.0注解配置 6.Servlet体系结构 ...
- frp内网穿透(已验证)
# 云服务器frp内网穿透教程 软件源码在https://github.com/fatedier/frp/releases上,根据系统类型,按需下载 教程术语描述 > A 是有固定IP的云服务器 ...