接口測試學習-python第九課(yaml格式的測試用例)


在上一節課程中,學習了根據數據驅動測試,當時測試接口需要的數據是存儲在excel文檔中的,讀取比較麻煩。下面是讀取excel文檔並獲取到接口測試必須數據和驗證結果數據的代碼。首先我們需要創建一個空的list來存放讀取到的數據,然后打開excel文檔,從第二行開始讀取用例內容(第一行是標題),獲取到每行內容后,只保留接口測試需要的數據(原來的excel文檔中第四列到第七列分別存放了url,請求方式,請求參數,預期結果),然后將這部分數據存入空的list中。這樣cases就是一個二維數據,這個list中包含了excel中每一行的用例數據,每個用例數據里面包含了四個元素。類似於[[url1,method1,req_data1,check1],[url2,method2,req_data2,check2]]。代碼中的apt_log是實例化的日志記錄類。但是讀取后,在使用這些元素進行接口測試時,還需要再次轉換,因為request模塊接口測試中的data是字典格式的。此處是list格式,屆時還需要轉換。

 1   def get_case(self, file_path):
 2       cases = []  # 存放所有的測試用例
 3       if file_path.endswith('.xls') or file_path.endswith('.xlsx'):  # 判斷路徑是否存在
 4           try:
 5               book = xlrd.open_workbook(file_path)
 6               sheet = book.sheet_by_index(0)  # 打開用例文件
 7               for i in range(1, sheet.nrows):  # 從第二行開始遍歷excel文件內容(第一行是標題)
 8                   row_data = sheet.row_values(i)  # 獲取每行內容
 9                   cases.append(row_data[4:8])  # 在cases這個list中存每個用例的url,method,req_data,check
10               apt_log.info('共讀取%s條用例' % (len(cases)))  # 檢查cases中的元素個數,日志記錄讀取了幾條用例
11               self.file_path = file_path  # 既然讀取成功說明這個文件路徑是正確的,那么這邊定義下面寫exccel就可以直接使用了
12           except Exception as e:
13               apt_log.error('【%s】用例打開失敗,錯誤信息:%s' % (file_path, e))
14       else:
15           apt_log.error('用例文件不合法,%s' % file_path)
16       return cases

可以看到讀取excel步驟比較繁瑣,需要各種格式轉化。但是yaml格式的文件簡化了讀取用例的步驟,讀取這個格式的文件會自動設置為字典模式。而且只要在yaml格式的文件中錄入數據時遵循了文件固定的格式,也可以自動讀取出雙層字典,有多個用例時可以產生一個list包裹所有的字典格式的用例數據。如果不添加符號"-",讀取時文件中的所有數據都會轉為字典格式,而添加后,文件數據讀取為list格式,但符號內換行鎖緊記錄的數據是字典格式。但是check數據中,直接在符號"-"后添加數據,這部分數據會讀取為list格式。

 1 -  # 添加減號可以把用例轉為list,每一部分是一個字典
 2   url: /api/user/login
 3   detail: 正常登陸
 4   method: post
 5   data:  # 存放多層嵌套字典的方式
 6     username: *********
 7     passwd: *******
 8 #  headers:
 9 #    User-agent: Firefox
10 #  cookies:
11 #    sign: adfdsfnsdfnsd
12   check:  # 這樣定義check可以用in來判斷測試是否通過
13     - sign
14     - userId
15 
16 -
17   url: /api/user/login
18   detail: 密碼錯誤
19   method: post
20   data:
21     username: *********
22     passwd: *********
23   check:
24     - 密碼錯誤
25 
26 -
27   url: /api/user/login
28   detail: 必填參數未填,不填密碼
29   method: post
30   data:
31     username: *********
32   check:
33     - 必填參數未填

然后讀取yaml格式的文件,就像一般文件讀取一樣操作就可以了。

1 import yaml
2 
3 
4 f = open('login.yaml',encoding='utf-8')
5 res = yaml.load(f)
6 print(res)

讀取到的數據格式如下,可以看到一個list中包含了三個元素,每個元素都是字典格式的,這樣讀取數據就很方便了。

1 [{'url': '/api/user/login', 'check': ['sign', 'userId'], 'method': 'post', 'data': {'username': '*********', 'passwd': '*********'}, 'detail': '正常登陸'}, 
2 {'url': '/api/user/login', 'check': ['密碼錯誤'], 'method': 'post', 'data': {'username': '*********', 'passwd': '*********'}, 'detail': '密碼錯誤'}, 
3 {'url': '/api/user/login', 'check': ['必填參數未填'], 'method': 'post', 'data': {'username': '*********'}, 'detail': '必填參數未填,不填密碼'}]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM