在做接口自動化數據驅動的時候,本來打算一個接口對應一個yaml文件,看起來比較清晰,但是組長說一個接口對應一個yaml文件的方法不可行,因為假如項目有上千個接口,那就得新建上千個yaml文件,在打開項目加載的時候就會占用很大一部分資源,加載的會很慢,所以讓我把一個模塊的接口放在一個yaml文件里面,經過兩天的嘗試,最終成功實現
yaml文件格式
login:
- name: 正常登錄
request:
data:
username: 1251651532
password: 123456
extract:
Admin-Token: '"Admin-Token":"(.*?)"' #在該接口要提取的變量,key是要保存的到的變量,value是要提取的變量
validate:
code: "0"
deptName: 辦公室
- name: 異常登錄-username為空
request:
data:
username:
password: 123456
validate:
code: "500"
deptName:
get_data:
- name: 獲取客戶信息
request:
data: {'customerId': 1}
validate:
code: '0'
ownerUserName: 大大大
- name: 獲取不存在客戶信息
request:
data: {'customerId': 3}
validate:
code: '500'
msg: 服務器響應異常
在接口中調用的時候,只需要給每個接口傳對應的yaml的數據值即可
獲取yaml數據的函數
def read_yaml_file(path,part):
try:
with open(make_yaml_path(path), encoding='utf-8') as f:
caseinfo = yaml.load(stream=f, Loader=yaml.FullLoader)
new_caseinfo = caseinfo[part] # 每個接口選擇對應的part,如login
return new_caseinfo
except Exception as f:
log.Logger.error("讀取用例文件異常:異常信息:%s" % str(traceback.format_exc()))
這樣就和一個接口對應一個yaml的使用方法一樣了