前言
经过了前面多篇文章(参数组合测试利器 - allpairspy & 颜值爆表的 UI 测试报告 - ptest & 全自动黑科技 - testcase-automaker)的铺垫后,我们现在可以隆重介绍 泰斯特独创并经过实践 的接口测试体系三剑客。
Requests;
( 默认读者熟悉此库,若不了解可联系本人再出一篇教学文章 )Testcase-automaker ;
Ptest 。
本篇文章将会教会读者如何使用上述工具集 RTP 构造完整的接口测试体系。
正文
封装 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 库中导入 ( 建议根据自身业务重新封装 ),
tester 是 http_tester 的对象;
url参数 代表请求的地址;
parameters_structure 代表接口的参数结构,后端会根据该结构自动生成基于 pairwise 的用例集;
session 代表 request.Session 实例;
headers 则代表请求的头部信息;
最后调用 tester.exec_test() 方法则代表执行测试。
测试报告
执行上述代码后我们可以获得如下测试报告:
可以很清晰的看到各个用例的请求参数基于 pairwise 完美生成、并进行了自动化测试。
总结
希望本系列文章能帮助读者深入了解接口测试以及各种高级玩法,期待读者对测试框架的进一步完善与改进。
最后给大家推荐一下我的公众号 「智能测试开发」,欢迎大家扫描下方海报二维码关注公众号,交流~