接口測試三劍客 - RTF

前言

通過了前面多篇文章(參數組合測試利器 - allpairspy & 顏值爆表的 UI 測試報告 - ptest & 全自動黑科技 - testcase-automaker)的鋪墊後,咱們如今能夠隆重介紹 泰斯特首創並通過實踐 的接口測試體系三劍客。json

  • Requests
    ( 默認讀者熟悉此庫,若不瞭解可聯繫本人再出一篇教學文章 )後端

  • Testcase-automaker數組

  • Ptestbash

本篇文章將會教會讀者如何使用上述工具集 RTP 構造完整的接口測試體系。session

正文

封裝 Requests

首先,咱們須要封裝一下 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': ?} 的結構,故封裝中寫死了部分判斷,讀者可根據自身業務進行修改測試

編寫 ptest 測試用例

示例代碼:

@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

  • testerhttp_tester 的對象;url

  • url參數 表明請求的地址;

  • parameters_structure 表明接口的參數結構,後端會根據該結構自動生成基於 pairwise 的用例集;

  • session 表明 request.Session 實例;

  • headers 則表明請求的頭部信息;

  • 最後調用 tester.exec_test() 方法則表明執行測試。

測試報告

執行上述代碼後咱們能夠得到以下測試報告:

能夠很清晰的看到各個用例的請求參數基於 pairwise 完美生成、並進行了自動化測試。

總結

但願本系列文章能幫助讀者深刻了解接口測試以及各類高級玩法,期待讀者對測試框架的進一步完善與改進。


最後給你們推薦一下個人公衆號 「智能測試開發」,歡迎你們掃描下方海報二維碼關注公衆號,交流~


相關文章
相關標籤/搜索