日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2023/12/31 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 接口自动化之用例变量参数化(参数化处理器)的全部內容,希望文章能夠幫你解決所遇到的問題。

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