通过了前面多篇文章(参数组合测试利器 - 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 完美生成、并进行了自动化测试。
但愿本系列文章能帮助读者深刻了解接口测试以及各类高级玩法,期待读者对测试框架的进一步完善与改进。
最后给你们推荐一下个人公众号 「智能测试开发」,欢迎你们扫描下方海报二维码关注公众号,交流~