IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> python 接口自动化之用例变量参数化(参数化处理器) -> 正文阅读

[系统运维]python 接口自动化之用例变量参数化(参数化处理器)

场景:有环境变量需要替换到用例数据中去,

解决的问题:多条接口用例的通用配置和token之类的参数要写在每条测试用例中,替换不方便。

场景一:字符串中只有一个变量需要替换

原始数据:(数据来源:execl中读取,或者数据库中读取出来的,都可以)

params= '{"_ver":"3.18.1","_ct":"101","token":${token}'

在进行接口请求前,需要把数据中的变量${token} ,替换成环境变量,${} 只是一个特殊的标识符,目的的方便使用正则表达式匹配,换成你自己喜欢的都可以

在此处使用python的re模块的re.search和re.sub ,不清楚的可以在菜鸟站上搜到教程

Python3 正则表达式 | 菜鸟教程

下面是实现的代码

思路:

? ? ? ? 1、写出正则匹配式

? ? ? ? 2、取出字符串中匹配成功的变量

? ? ? ? 3、取出匹配到的值,也就是需要替换掉的变量

? ? ? ? 4、从环境变量中获取要变量值

? ? ? ? 5、使用re.sub进行替换。

sub的四个属性代表的意思:正则匹配式,要替换变量的字符串或者函数,要被查找替换的原始字符串,该模式匹配成功后的最大替换次数(默认为替换所有匹配到的)

import re
import Config

# 定义一个字符串,里面有一个变量
params= '{"_ver":"3.18.1","_ct":"101","token":${token},"order_id":${order_id}}'

# 写出正则匹配式
ru = r'\${(.*?)}'

# 进行正则匹配
while re.search(ru,params):
    # 取出字符串中匹配成功的变量
    res = re.search(ru, params)
    # 取出匹配到的值,也就是需要替换掉的变量
    key = res.group(1)
    print(key)
    # 从环境变量中获取要变量值
    # value = Config.token
    value = getattr(Config,key)
    print(value)
    # 进行替换,正则匹配式,要替换变量的字符串或者函数,要被查找替换的原始字符串,该模式匹配成功后的最大替换次数(默认为替换所有匹配到的),
    params = re.sub(ru,value,params,1)

print(params)

运行的结果:

?场景二:一个字符串中有多个变量需要替换

原始数据:

params= '{"_ver":"3.18.1","_ct":"101","token":${token},"order_id":${order_id}}'

思路:

? ? ? ? 1、写出正则匹配式

? ? ? ? 2、取出字符串中匹配成功的多个变量

? ? ? ? 3、循环多个变量取出匹配到的值,也就是需要替换掉的变量

? ? ? ? 4、从环境变量中获取要变量值

? ? ? ? 5、使用re.sub进行替换。

实现代码:

import re
import Config

# 定义一个字符串,里面有一个变量
params= '{"_ver":"3.18.1","_ct":"101","token":${token},"order_id":${order_id}}'

# 写出正则匹配式
ru = r'\${(.*?)}'

# 进行正则匹配,匹配多个变量
while re.search(ru,params):
    # 取出字符串中匹配成功的多个变量
    res = re.search(ru, params)
    # 取出匹配到的值,也就是需要替换掉的多个变量
    keys = res.groups()
    # 循环对匹配到的值进行替换
    for key in keys:
        print(key)
        # 从环境变量中获取要变量值
        value = getattr(Config, key)
        print(value)
        # 进行替换,正则匹配式,要替换变量的字符串或者函数,要被查找替换的原始字符串,该模式匹配成功后的最大替换次数(默认为替换所有匹配到的),
        params = re.sub(ru, value, params, 1)

print(params)

运行结果:

?

getattr是用来获取对象中的属性或者方法的,在属性名或者方法名不确定是变量时使用。

在上面的例子中getattr(Config, key) 等价于?Config.token或者Config.order_id

token和order_id是key 在运行中对应的值

不能直接使用Config.key,因为这种情况下key就是属性名或者方法名,不能替换成key对应的变量

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 22:37:43  更:2022-03-17 22:39:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:39:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码