首页 > 其他分享 >pytest + yaml 框架 -13.多环境配置切换

pytest + yaml 框架 -13.多环境配置切换

时间:2022-12-20 19:35:59浏览次数:46  
标签:13 URL 配置 yaml pytest url base MYSQL

前言

当我们在测试环境写好自动化的代码,领导说你把代码部署到联调环境再测一测,这时候去改用例里面的配置是很痛苦的。
所以我们在设计自动化用例的时候,就先要想到多环境的配置与切换。

多环境配置

如果需用到多套环境 test/uat 等,那么应该在用例的根目录(pytest.ini 同级文件)创建一个config.py 文件
pip 安装插件

pip install pytest-yaml-yoyo

多套环境切换功能在 v1.1.0 版本上实现

class Config:
"""多套环境的公共配置"""
version = "v1.0"


class TestConfig(Config):
"""测试环境"""
BASE_URL = 'http://192.168.1.1:8000'
MYSQL_HOST = "192.168.1.1"
MYSQL_USER = "root"
MYSQL_PASSWORD = "123456"
MYSQL_PORT = 3306
MYSQL_DATABASE = "xxx" # 连接数据的库名


class UatConfig(Config):
"""联调环境"""
BASE_URL = 'http://192.168.1.3:8080'
MYSQL_HOST = "http://192.168.1.3"
MYSQL_USER = "root"
MYSQL_PASSWORD = "654321"
MYSQL_PORT = 3306
MYSQL_DATABASE = "xxx" # 连接数据的库名


# 环境关系映射,方便切换多环境配置
env = {
"test": TestConfig,
"uat": UatConfig
}

按以上的配置格式,配置不同的环境,最后做一个环境名称和配置的映射关系,必须是 env 命名,格式如下

env = {
"test": TestConfig,
"uat": UatConfig
}

那么在执行用例的时候,可以选择执行test 环境还是uat 环境,有 2 种方式可以配置待执行的环境

方法一: 在pytest.ini 中配置

[pytest]


env = test

方法二: 执行 pytest 命令的时候设置

pytest --env test

如果2个地方都有设置,那么优先级是:命令行参数​​ --env test​​​ 大于 pytest.ini 中配置​​env = test​​.

测试环境的 BASE_URL

在上一篇中讲到 ​​pytest + yaml 框架 -11.全局 base_url 配置​​

环境地址优先级使用如下:
1.全局配置命令行参数--base-url优先级大于 pytest.ini 文件中的base_url 配置。
2.yaml 文件 config 中的base_url 优先级大于全局配置
3.request 请求的url 如果是绝对地址,那么base_url 无效
总的来说 : url 绝对地址 > config 中的base_url > 命令行参数--base-url > pytest.ini 文件中的base_url

这里我们新增了一个在config.py 中也可以配置全局的base_url (config.py 中的配置用大写命名 BASE_URL)

如果在 config.py 中配置全局的 BASE_URL ,那么也会生效。优先级会低于命令行和 pytest.ini 的配置

总的来说:url 绝对地址 > config 中的base_url > 命令行参数--base-url > pytest.ini 文件中的 base_url > config.py 的 BASE_URL

多个base_url 切换

有同学提到说,如果一个用例中有多个base_url 需要切换,该如何解决?

我们在配置项中BASE_URL 项是设置默认的全局base_url地址,如果有多个地址,我们还可以用其它的配置参数,比如 ​​BLOG_URL​​​ 和 ​​DEMO_URL​

class TestConfig(Config):
"""测试环境"""
BASE_URL = 'http://192.168.1.1:8000'
BLOG_URL = 'https://www.cnbogs.com'
DEMO_URL = 'http://httpbin.org'
MYSQL_HOST = "192.168.1.1"
MYSQL_USER = "root"
MYSQL_PASSWORD = "123456"
MYSQL_PORT = 3306
MYSQL_DATABASE = "xxx" # 连接数据的库名

上面的配置中,我们就配置了3个环境地址

BASE_URL = 'http://192.168.1.1:8000'
BLOG_URL = 'https://www.cnblgs.com'
DEMO_URL = 'http://httpbin.org'

在yaml 用例中,如果没有传base_url, 那么会用默认的 ​​BASE_URL = 'http://192.168.1.1:8000'​

使用示例

config:
name: 示例

用例:
-
name: GET
request:
method: GET
url: /get
validate:
- eq: [status_code, 200]

当一个接口中同时用到3个测试地址 ​​BASE_URL​​​、​​BLOG_URL​​​、​​DEMO_URL​​​ 时,可以通过 env 变量取值,如: ​​${env.BLOG_URL}​

config:
name: 示例

用例:

-
name: GET
request:
method: GET
url: ${env.BLOG_URL}/yoyoketang
validate:
- eq: [status_code, 200]

-
name: GET
request:
method: GET
url: ${env.DEMO_URL}/get
validate:
- eq: [status_code, 200]

-
name: GET
request:
method: GET
url: /get
validate:
- eq: [status_code, 200]

其它配置参数

如果配置中需要加其它配置参数

class TestConfig(Config):
"""测试环境"""
BASE_URL = 'http://192.168.1.1:8000'
USER = 'test'
TEL = '100860000'

那么在用例中引用配置参数可以用 ​​${env.配置参数}​​ 取到配置中的值。



标签:13,URL,配置,yaml,pytest,url,base,MYSQL
From: https://blog.51cto.com/u_15249893/5956473

相关文章

  • 1135新年好
    原题链接思路从自己家开始,顺序任意,能去五个亲戚家,可以从亲戚家去到另外的亲戚家,于是这启发我们把每个亲戚和自己到全图其他点的最短路处理出来。这乍一看是多源汇最短路......
  • WirePlumber更新到0.4.13版本,增加了新的功能、改进和错误修复
    WirePlumber是PipeWire多媒体服务器的模块化会话和策略管理器实现,用于处理Linux系统上的音频、视频流和硬件,今天已经更新到0.4.13版本,这个版本增加了新的功能、改进和错......
  • CF1344D 题解
    题意传送门给定一个长度为\(n\)的数组\(a_i\),构造自然数数组\(b_i\)满足:\(\foralli,b_i\in[0,a_i]\)\(\sum_{i=1}^nb_i=k\)并最大化\(\sum_{i=1}^nb_i(a......
  • pytest 各个用例之间用全局变量传递参数
    pytest的各个用例之间传递参数有三种方式一、全局变量全局变量需要定义在constant.py文件里,不能定义在当前用例所在的文件里,否则即使上个用例修改了变量的值,在下个用......
  • PyTestReport-0.1.9版本更新
    文章目录​​多了哪些功能呢?​​​​如何与PyTest框架结合使用​​​​如何通过API的方式生成报告​​​​如何生成图片报告并发送邮件​​​​新书推荐​​还记得那个发布......
  • Python单元测试报告框架PyTestReport
    文章目录开局一张图安装通过pip安装通过安装包通过源码(最新版本)使用单元测试使用样例附录​​原文链接​​如果你是Java栈的同学,那么你可能知道extentreport测试报告框架。......
  • 深入对比TOML,JSON和YAML
    坦率地说,在我开始与HugoTOML合作之前,我感到羞耻是一个需要发现的新领域,但我对YAML和JSON非常熟悉。本文将帮助您了解如何通过不同的数据格式构建数据。    在Hugo中,您......
  • macOS 13 彻底卸载 Google Chrome 和清除用户数据 All In One
    macOS13彻底卸载GoogleChrome和清除用户数据AllInOnebug/Users/xgqfrms-mm/Library/Users/xgqfrms-mm/Library/Caches#“~/Library/Caches”$pwd/Users/x......
  • P1314 聪明的质监员(题解)
    题目小T是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有\(n\)个矿石,从\(1\)到\(n\)逐一编号,每个矿石都有自己的重量\(w_i\)以及价值\(v_i\)。检验......
  • linux(Ubuntu)安装QQ2013
    首先简述自己的系统配置:win7+ubuntu12.04linuxQQ有各种版本,这里介绍两种:linuxQQ和wineQQ 1------linuxqq是QQ简化版,功能很少,界面很差,但是安装简单     下载地......