一、前言
一天,你的领导要你对某上游供应商接口做测试,你一听,接口测试,用什么做好呢 ? Postman ? Jmeter ? balabala。。。优秀的你,肯定想到了一大堆工具。当然也包括用python写。为了凸显B格,你选择了python。新建一个 xx供应商_case_1.py 文件,然后一顿猛如虎的撸代码,就好像上次文章写道:Python 3.7 自动化接口测试简单实例
import requests url = "******" header = "******" params = "******" response = reqeste.get(url,header,params) jsondata = json.loads(response.text) try: assert ****** except: print(******)
领导又给你派N个上游供应商接口,你开始依葫芦画瓢,流水账代码走起。完事你仔细想想总觉得不对,于是你将每个请求都封装起来,大概长这样:
def jk_2ys(): # V1.2.4 url = "***" ... def jk_3ys(): # V1.2.4 url = "***" ... def scm_location(): # V1.2.7 url = "***" ...
逐渐越积越多,领导希望你输出报告。你:“exm?”,改改改。于是你引入了Unittest单元测试框架、HTMLTestRunner等等。正打算将各个测试用例分类重新规整,你领导又来了。如果世界上有真爱这种东西存在的话,那你领导对你的爱便是了。
“我又从开发那里帮你要了100个接口过来测,开不开心?”
“你的脚本给我看下,这个是啥意思?可以在我那边运行吗?”
“你的脚本怎么这么多啊,好乱啊”
“这几个接口是串联起来的,你处理下”
…
幸好,你并没有放弃,你在某个机缘巧合下发现了一个叫HttpRunner的测试框架,这个框架使用的是yaml/json格式的文本来描述脚本,只需一行命令即可进行接口测试。在连夜研究完这个框架后,你发出慨然长叹:“原来接口测试可以这么优雅的写啊!”
二、实现
2.1 开发环境
2.2 项目文件结构
项目文件结构分为2种,一种是测试用例分层结构,一种是测试用例不分层结构。
hrun --startproject demo # 分层脚手架
利用项目脚手架直接创建测试用例分层结构,一个基本的测试用例分层结构就搞定了(懒人专用)
2.3 接口实例
http://127.0.0.1:8000/atp/mock/sjjh/clwz
{"productid":"3100721","carid":"京A89561"}
{"biz_code":"200","biz_msg":"业务处理成功","code":200,"data":{"adr":"山东省枣庄市滕州市红荷大道与善国路红绿灯交汇处东600米路北冯河小院,东方向,220.7米","city":"枣庄市","country":"滕州市","drc":"0","lat":"21075184","lon":"70300750","province":"山东省","spd":"0.0","state":"1001","utc":"1568102254000"},"data_total":null,"msg":"请求成功","result_id":"201909100357000467d44922d2c9845f2a13fd9ea5fa92ce9","z1":null,"z2":null}
2.4 编写Yaml格式脚本
- config: # config模块 name: testcase location_mock # 用例集名称 variables: {} # 声明变量关键字 - test: # test模块 name: /api/carlocation_mock # 测试用例名 request: # 请求体 url: http://10.8.18.161:8080/atp/mock/sjjh/clwz # 请求路径 method: POST # 请求方式 headers: # 请求头 Content-Type: "application/json" json: # 请求参数 productid: 3100721 carid: "京A89561" validate: # 校验点 - eq: [status_code, 200] - eq: [content.biz_code, "200"] - eq: [content.biz_msg, 业务处理成功]
2.5 编写Json格式脚本
[{ "config": { "name": "testcase location_mock", "variables": {} } }, { "test": { "name": "/api/carlocation_mock", "request": { "url": "http://10.8.18.161:8080/atp/mock/sjjh/clwz", "method": "POST", "headers": { "Content-Type": "application/json" }, "json": { "productid": "3100721", "carid": "京A89561" } }, "validate": [{ "eq": ["status_code", 200] }, { "eq": ["content.biz_code", "200"] }, { "eq": ["content.biz_msg", "业务处理成功"] } ] } } ]
2.6 运行脚本
运行用例很简单,直接在cmd里面,cd到脚本目录下,运行
hrun post_api.yaml
或者执行json文件
hrun post_api.json
执行结果如下
2.7 查看测试报告
请求
响应
检查点
统计
本文分享自微信公众号 - IT测试前沿(gh_a3e0fe8fdded),作者:Alon
原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。
原始发表时间:2019-09-23
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句