通過了前面多篇文章(參數組合測試利器 - allpairspy & 顏值爆表的 UI 測試報告 - ptest & 全自動黑科技 - testcase-automaker)的鋪墊後,咱們如今能夠隆重介紹 泰斯特首創並通過實踐 的接口測試體系三劍客。json
Requests;
( 默認讀者熟悉此庫,若不瞭解可聯繫本人再出一篇教學文章 )後端
Testcase-automaker ;數組
Ptest 。bash
本篇文章將會教會讀者如何使用上述工具集 RTP 構造完整的接口測試體系。session
首先,咱們須要封裝一下 Requests 以供集成 ptest:框架
示例代碼 (testcase-automaker 中已集成)以下:工具
from ptest.assertion import assert_equals, failfrom ptest.plogger import preporterimport jsondef request(url, method, json_data=None, session=None, headers=None, assertion=None): data = '' status_code = '' req_json = '' try: text = session.request(url=url, method=method, json=json_data, headers=headers).text if len(text) <= 1000: preporter.info(text) req_json = json.loads(text) status_code = req_json["status"] data = req_json["data"] preporter.info('接口返回status爲:' + str(status_code)) if len(str(data)) >= 3000: preporter.info('接口返回data爲(限制長度爲3000):' + str(data)[0:3000]) else: preporter.info('接口返回data爲:' + str(data)) except BaseException: if not assertion: fail('沒法獲取status或data!') finally: if not assertion: if not status_code == 'ok': preporter.error('接口響應:' + str(req_json)) else: assert_equals(status_code, 'ok') assert_equals(status_code, 'ok') else: key = assertion.keys() assert_equals(assertion[key], req_json[key]) if data is not None: return data複製代碼
因全部被測接口規定都是 {'status': 'ok', 'data': ?} 的結構,故封裝中寫死了部分判斷,讀者可根據自身業務進行修改。測試
@Test(tags=["regression", "smoke"], timeout=100, description="驗證POST/filesUpload接口返回status是否爲ok")def files_management_001(self): tester = http_tester(url=self.url + '/filesUpload', method='POST', parameters_structure={'prefix': {'type': 'string', 'range': [self.first_profile_id]}, 'fileName': {'type': 'string', 'range': [self.file_name_1, self.file_name_2]}, 'file': {'type': 'string', 'range': ['test1', 'test2']}}, session=self.session, headers=self.headers) tester.exec_test()複製代碼
其中 http_tester 可在 testcase-automaker 庫中導入 ( 建議根據自身業務從新封裝 ),ui
tester 是 http_tester 的對象;url
url參數 表明請求的地址;
parameters_structure 表明接口的參數結構,後端會根據該結構自動生成基於 pairwise 的用例集;
session 表明 request.Session 實例;
headers 則表明請求的頭部信息;
最後調用 tester.exec_test() 方法則表明執行測試。
執行上述代碼後咱們能夠得到以下測試報告:
能夠很清晰的看到各個用例的請求參數基於 pairwise 完美生成、並進行了自動化測試。
但願本系列文章能幫助讀者深刻了解接口測試以及各類高級玩法,期待讀者對測試框架的進一步完善與改進。
最後給你們推薦一下個人公衆號 「智能測試開發」,歡迎你們掃描下方海報二維碼關注公衆號,交流~