一.代码层实现动态切换

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. 【Zabbix】Zabbix5.0安装部署问题汇总

    报错信息:No package 'oniguruma' found 解决方法:https://www.limstash.com/articles/202003/1563 报错信息: PHP bcmat ...

  2. spring-关于组件的注入及获取流程

    一.组件注入的基本流程: 容器初始化: Spring应用启动时,会读取配置(如XML配置.注解配置等),并根据这些配置创建Bean定义(BeanDefinition). 根据Bean定义,Spring ...

  3. Luogu P2036 [COCI2008-2009 #2] PERKET

    今天我们来看一道题:Luogu P2036 [COCI2008-2009 #2] PERKET 这道题不难,典型的暴力枚举 由于食材数量随机,无法直接用循环解,但是可以使用递归 \(MY_{CODE: ...

  4. SQL查询语句汇总

    SQL查询语句汇总 students表 id class_id name gender score 1 1 小明 M 90 2 1 小红 F 95 class表 id name 1 一班 2 二班 3 ...

  5. 从基础到高级应用,详解用Python实现容器化和微服务架构

    本文分享自华为云社区<Python微服务与容器化实践详解[从基础到高级应用]>,作者: 柠檬味拥抱. Python中的容器化和微服务架构实践 在现代软件开发中,容器化和微服务架构已经成为主 ...

  6. [oeasy]python0009 - 设置断点_break_point

    ​ 调试程序 回忆上次内容 ​py​​ 的程序是按照顺序执行的 是一行行挨排解释执行的 程序并不是数量越多越好 kpi也在不断演化 ​ 编辑 写的代码越多 出现的bug就越多 那什么是bug呢? 如何 ...

  7. 一种优秀的虚拟机内存架构 - AQ

    源链接:https://www.axa6.com/zh/an-excellent-virtual-machine-memory-architecture 简介 虚拟机内存架构直接影响虚拟机的性能和占用 ...

  8. 第四章:springboot整合mybatis

    1,引入mybatis依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifact ...

  9. Django 不通过外键实现多表关联查询

    Django不通过外键实现多表关联查询 by:授客 QQ:1033553122 测试环境 Win 10   Python 3.5.4   Django-2.0.13.tar.gz 需求 不通过外键,使 ...

  10. nacos启动失败:No DataSource set

    通过docker查看nacos的日志发现nacos好端端的突然不能用了 docker logs nacos 报错后说是no datasource set,我看了我在docker里的MySQL是正常启动 ...