接口测试三剑客 - 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 完美生成、并进行了自动化测试。

总结

但愿本系列文章能帮助读者深刻了解接口测试以及各类高级玩法,期待读者对测试框架的进一步完善与改进。


最后给你们推荐一下个人公众号 「智能测试开发」,欢迎你们扫描下方海报二维码关注公众号,交流~


相关文章
相关标签/搜索