1. 程式人生 > 其它 >花了兩天研究的測試用例的字串提取方式,直接拿走

花了兩天研究的測試用例的字串提取方式,直接拿走

我們前面跟大家分享了介面之間的資料依賴關係,解決介面之間的關係依賴方式是:

第一步:先通過jsonpath 去提取值,第二步我們接著再替換值

那麼我們這個值是怎麼進行替換的呢?

——直接從我們建立的Data 類(我們建立的my_data全域性變數檔案)當中取屬性值為替換

還有:

1、在一條測試用例當中,你是怎麼知道哪些值需要替換,哪些不需要呢?

——解決方法:打標記 #全域性變數名#。

2、一條測試用例資料中,url 、data 、assert 要替換的話,你是怎麼識別到有多少欄位需要替換呢?你是怎麼處理的?

——解決方法:一條用例當中,從excel 當中讀取出來是一個字典,把字典轉換成字串,統一從字串找所有的識別符號。

3、一條測試用例資料當中,要替換多個不同的資料,你是怎麼處理的?也就說,怎麼樣能把所有的mark 一次性找出來

——解決方法:不同的mark ,通過正則表示式,全部都找到了並且放在了列表當中。遍歷標記符mark 列表,如果mark 是全域性

變數的屬性名,那麼就將mark 替換為真實的值。

4、你是如何將用例中要替換的標識,與Data 全域性變數關聯起來的?

——解決方法:識別符號# ,要與Data 類屬性名匹配。

示例程式碼如下:

"""
 框架當中,提取識別符號(mark)的正則表示式:
res = re.findall("#(\w+)#",ss2)
print(res)
res的結果:是一個列表。如果列表不為空,表示提取到了識別符號(mark)
""" import re from common.my_data import Data # 第一步:準備一條測試資料 case = { "url":"member/login", "method":"post", "req_data": '{"mobile_phone":#user#,"pwd":#passwd#}', "extract": '{"token":"$..token","member_id":"$..id","leave_amount":"$..leave_amount"}' } # 第二步,把excel當中的一整個測試用例(excel當中的一行)轉換成字串
case_str = str(case) print(case_str) # 第三步,利用正則表示式提取mark識別符號 res = re.findall("#(\w+)#",case_str) print(res) # 第四步:遍歷識別符號mark,如果識別符號是全域性變數Data類的屬性名,則用屬性值替換掉mark if res: for mark in res: # 如果全域性變數Data類有mark這個屬性名 if hasattr(Data, mark): # 使用全域性變數Data類的mark屬性值,去替換測試用例當中的#mark# case_str = case_str.replace(f"#{mark}#", getattr(Data,mark)) print(case_str) # 第五步:將完全替換後的一整個測試用例,轉換回字典 case_dict = eval(case_str) print(case_dict)