jenkins动态切换环境
一.代码层实现动态切换
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动态切换环境的更多相关文章
- Pytest测试框架一键动态切换环境思路及方案
前言 在上一篇文章<Pytest fixture及conftest详解>中,我们介绍了fixture的一些关键特性.用法.作用域.参数等,本篇文章将结合fixture及conftest实现 ...
- Profile 动态切换环境
一.多 Profile 文件我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml默认使用 application.properties 的 ...
- 第20章 使用LNMP架构部署动态网站环境
章节概述: 本章节将从Linux系统的软件安装方式讲起,带领读者分辨RPM软件包与源码安装的区别.并能够理解它们的优缺点. Nginx是一款相当优秀的用于部署动态网站的服务程序,Nginx具有不错的稳 ...
- hibernate动态切换数据源
起因: 公司的当前产品,主要是两个项目集成的,一个是java项目,还有一个是php项目,两个项目用的是不同的数据源,但都是mysql数据库,因为java这边的开发工作已经基本完成了,而php那边任务还 ...
- Spring动态切换多数据源解决方案
Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性.而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时 ...
- 【原】通过AOP实现MyBatis多数据源的动态切换
[环境参数]1.开发框架:Spring + SpringMVC + MyBatis 2.数据库A的URL:jdbc.url=jdbc:mysql://172.16.17.164:3306/ test? ...
- [转]使用keepalived搭建主备切换环境
使用keepalived搭建主备切换环境 时间 2016-09-15 08:00:00 cpper 原文 http://cpper.info/2016/09/15/keepalived-for-ma ...
- Spring主从数据源动态切换
参考文档: http://uule.iteye.com/blog/2126533 http://lanjingling.github.io/2016/02/15/spring-aop-dynamicd ...
- SpringBoot多数据源动态切换数据源
1.配置多数据源 spring: datasource: master: password: erp_test@abc url: jdbc:mysql://127.0.0.1:3306/M201911 ...
- AOP获取方法注解实现动态切换数据源
AOP获取方法注解实现动态切换数据源(以下方式尚未经过测试,仅提供思路) ------ 自定义一个用于切换数据源的注解: package com.xxx.annotation; import org. ...
随机推荐
- 1.Javascript 快速入门(主要)
运算 &&运算是与运算,只有所有都为true,&&运算结果才是true: true && true; // 这个&&语句计算结果为tru ...
- 机器学习策略篇:详解如何使用来自不同分布的数据,进行训练和测试(Training and testing on different distributions)
如何使用来自不同分布的数据,进行训练和测试 深度学习算法对训练数据的胃口很大,当收集到足够多带标签的数据构成训练集时,算法效果最好,这导致很多团队用尽一切办法收集数据,然后把它们堆到训练集里,让训练的 ...
- npm ERR! `perfix` is not a valid npm option
全局路径cmd命令:npm config set perfix "D:\Program Files\nodejs\node_global" 缓存路径cmd命令:npm config ...
- [oeasy]python0041_teletype历史_博多码_shift_capslock_字符数字切换_gear
teletypewriter 历史 回忆上次内容 上次见到了一个真的机械打字机 感受到了蒸汽朋克的时代背景 上上次区分了一些概念 terminal终端,电脑连线最终的端点 TeleTYpewriter ...
- Centos7下安装配置最新版本Jenkins(2.452.3)
1.基础环境配置 1.1 服务器下载Jenkins安装包 下载地址:https://www.jenkins.io/download/ 下载命令:wget https://get.jenkins.io/ ...
- 20+前端常用的vscode插件(总结推荐)
本篇文章给大家总结分享20多个前端常用的vscode插件.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 1. vscode 简介vscode是微软开发的的一款代码编辑器,就如官网上 ...
- java的自动拆箱会发生NPE
平时的小细节,总能在关键时刻酿成线上事故,最近在代码中使用了Integer的自动拆箱功能,结果NPE(NullPointException)了,悲剧啊... 一.何为自动拆箱 要说自动拆箱,就必须说自 ...
- 利用Elasticsearch实现地理位置、城市搜索服务
最近用到一些简单的地理位置查询接口,基于当前定位获取用户所在位置信息(省市区),然后基于该信息查询当前区域的......提供服务. 然后就自己研究了下GIS,作为一个程序员.自己能不能实现这个功能呢? ...
- 【Java-GUI】01 AWT & 布局
https://www.bilibili.com/video/BV1Z54y1S7ns --1.AWT 完整描述:Abstract Window Toolkit 抽象窗口工具集 提供的API资源 抽象 ...
- 什么是智慧城市(Smart City)?
Smart City是一个常见的概念,但是这个东西,这个名词到底指代的是什么却一直搞不太清,于是就查了查资料,有了这篇blog. 参考: https://baijiahao.baidu.com/s?i ...