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 接口自动化之用例变量参数化(参数化处理器)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PyTorch图神经网络实践(六)组合优
- 下一篇: Java毕设项目电子病历系统计算机(附源