一.代码层实现动态切换

1.首先在conftest.py下声明pytest_addoption钩子函数,写法如下

def pytest_addoption(parser):
# 设置要接收的命令行参数
parser.addoption("--env", default="prod", choices=['pre', 'uat', 'prod', 'test'],
help="命令行参数,--env设置环境切换")

--env:命令行参数

default:启动时未传--env,则默认值为prod

choices:参数值范围

help:命令行说明,可在终端执行:pytest --help查看

2.config文件下创建config.ini配置文件,写法如下

[HOST]
pre=https://pre-www.baidu.com
prod=http://www.baidu.com
uat=https://uat-www.baidu.com
test=https://test-www.baidu.com

这里不同环境对应的是不同地址

3.common在创建basecase封装读取ini文件的方法

def read_ini(config_path):
with open(config_path, mode='r') as f:
dict_ini = {i.strip().split('=')[0]: i.strip().split('=')[1] for i in f.readlines()[1:]}
return dict_ini

config_path为ini地址,return返回的是处理过后的dict格式数据

4.用例层调用方法拿到不同的环境地址

from common.basecase import read_ini
from common.headle_path import config_path # @pytest.mark.order(1)
def test_login(request,webdriver_init):
custom_arg = request.config.getoption("--env")
webdriver_init.get(read_ini(config_path)[custom_arg])

request:固定写法,通过request.config.getoption('--env')来获取启动时传递的参数

webdriver_init:conftest中初始化webdriver的固件函数

5.main.py中启动用例

import pytest

if __name__ == '__main__':
pytest.main(['-s', '-v', '--env=prod'])

二.jenkins实现动态切换

基础配置可参考:https://www.cnblogs.com/lihongtaoya/p/18351371

1.在job配置下选择:This project is parameterized

填写名称,选项,以及描述

2.Execute Windows batch command下填写win运行命令

%env%:表示运行python脚本时向代码中传递一个值,env就是在This project is parameterized下设置的名称

3.如何取到这个值

python中可以通过os模块中argv列表来获取,run.py写法如下

import sys

import pytest

if __name__ == '__main__':
# pytest.main(['-s', '-v', '--env=prod'])
arg_one = sys.argv[1]
pytest.main(['-s', '-v', f'--env={arg_one}'])

sys.argv[1]:表示获取传递的一个值

4.开始构建

在构建选项中可以看到我们设置的环境选项以及描述,选择一个环境后开始构建即可。

jenkins动态切换环境的更多相关文章

  1. Pytest测试框架一键动态切换环境思路及方案

    前言 在上一篇文章<Pytest fixture及conftest详解>中,我们介绍了fixture的一些关键特性.用法.作用域.参数等,本篇文章将结合fixture及conftest实现 ...

  2. Profile 动态切换环境

    一.多 Profile 文件我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml默认使用 application.properties 的 ...

  3. 第20章 使用LNMP架构部署动态网站环境

    章节概述: 本章节将从Linux系统的软件安装方式讲起,带领读者分辨RPM软件包与源码安装的区别.并能够理解它们的优缺点. Nginx是一款相当优秀的用于部署动态网站的服务程序,Nginx具有不错的稳 ...

  4. hibernate动态切换数据源

    起因: 公司的当前产品,主要是两个项目集成的,一个是java项目,还有一个是php项目,两个项目用的是不同的数据源,但都是mysql数据库,因为java这边的开发工作已经基本完成了,而php那边任务还 ...

  5. Spring动态切换多数据源解决方案

    Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性.而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时 ...

  6. 【原】通过AOP实现MyBatis多数据源的动态切换

    [环境参数]1.开发框架:Spring + SpringMVC + MyBatis 2.数据库A的URL:jdbc.url=jdbc:mysql://172.16.17.164:3306/ test? ...

  7. [转]使用keepalived搭建主备切换环境

    使用keepalived搭建主备切换环境 时间 2016-09-15 08:00:00 cpper 原文  http://cpper.info/2016/09/15/keepalived-for-ma ...

  8. Spring主从数据源动态切换

    参考文档: http://uule.iteye.com/blog/2126533 http://lanjingling.github.io/2016/02/15/spring-aop-dynamicd ...

  9. SpringBoot多数据源动态切换数据源

    1.配置多数据源 spring: datasource: master: password: erp_test@abc url: jdbc:mysql://127.0.0.1:3306/M201911 ...

  10. AOP获取方法注解实现动态切换数据源

    AOP获取方法注解实现动态切换数据源(以下方式尚未经过测试,仅提供思路) ------ 自定义一个用于切换数据源的注解: package com.xxx.annotation; import org. ...

随机推荐

  1. SQL如何优化和设计索引

    SQL优化 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引: 避免使用 NULL 字段,很难查询优化且占用额外索引空间,可以设置默认值0或'': ...

  2. QCon 回顾 | Data Fabric:逻辑统一、物理分散

    Data Fabric(数据编织),自 2019 年开始就在 Gartner 年度技术趋势榜单上安家,并在 2022 年被列为数据分析领域十大技术趋势之首,它究竟有哪些价值?又如何在企业落地? 在近日 ...

  3. js需要同时发起百条接口请求怎么办?--通过Promise实现分批处理接口请求

    如何通过 Promise 实现百条接口请求? 实际项目中遇到需要发起上百条Promise接口请求怎么办? 前言 不知你项目中有没有遇到过这样的情况,反正我的实际工作项目中真的遇到了这种玩意,一个接口获 ...

  4. idea使用git管理项目(Mac版)

    1.本地安装git mac版 breaw install git 查看是否安装成功 git --version 这样就成功了,一般是自带的有 windows版 https://www.cnblogs. ...

  5. Asp .Net Core 系列:详解授权以及实现角色、策略、自定义三种授权和自定义响应

    什么是授权(Authorization)? 在 ASP.NET Core 中,授权(Authorization)是控制对应用资源的访问的过程.它决定了哪些用户或用户组可以访问特定的资源或执行特定的操作 ...

  6. 智能家居如何把老款定频空调变成智能“变频”空调#米家#智能家居#HA

    背景 最近长沙的天气暴热,室内达到了34-35度,天气预报最高温度上了40度,这么酷热的天气,离开了空调,基本上就是一身汗,全身湿透,特别难受,然后不得不开启家里的一台将近10年的老式定频空调,输入功 ...

  7. 【MySQL】MGR高可用搭建

    MySQL8.0.27如何安装 https://www.cnblogs.com/mindzone/p/15450312.html 部署过程中各种问题可参考的解决方案 我遇见的搭建问题,解决方案参考下面 ...

  8. 【OracleDB】 09 创建和管理表

    Oracle常见的数据库对象 - 表 基本的数据存储集合,行与列组成 - 视图 抽取的逻辑集合 - 序列 提供规律性的数值 - 索引 提高查询效率 - 同义词 对象别名 TABLE 表 用户定义的表: ...

  9. 【DataBase】SQL50 Training 50题训练

    原文地址: https://blog.csdn.net/xiushuiguande/article/details/79476964 实验数据 CREATE DATABASE IF NOT EXIST ...

  10. IEEE TCDS 专刊"Embodied AI in Indoor Robotics"征稿通知

    原文地址: https://mp.weixin.qq.com/s/Z-U4EO6FCF703yMwHXAq5A 随着深度学习和强化学习在机器人学领域的迅猛发展,尤其是大型语言模型的创新进步,具身人工智 ...