日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python 接口自动化之用例变量参数化(参数化处理器)

發布時間:2023/12/31 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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.tokenvalue = 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對應的變量

總結

以上是生活随笔為你收集整理的python 接口自动化之用例变量参数化(参数化处理器)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。