前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 3.7 + HttpRunner 初探

Python 3.7 + HttpRunner 初探

作者头像
muntainyang
发布2020-10-23 11:32:22
7350
发布2020-10-23 11:32:22
举报
文章被收录于专栏:IT测试前沿

一、前言

一天,你的领导要你对某上游供应商接口做测试,你一听,接口测试,用什么做好呢 ? Postman ? Jmeter ? balabala。。。优秀的你,肯定想到了一大堆工具。当然也包括用python写。为了凸显B格,你选择了python。新建一个 xx供应商_case_1.py 文件,然后一顿猛如虎的撸代码,就好像上次文章写道:Python 3.7 自动化接口测试简单实例

代码语言:javascript
复制
import requests
url = "******"
header = "******"
params = "******"
response = reqeste.get(url,header,params)
jsondata = json.loads(response.text)
try:
    assert ******
except: 
    print(******)

领导又给你派N个上游供应商接口,你开始依葫芦画瓢,流水账代码走起。完事你仔细想想总觉得不对,于是你将每个请求都封装起来,大概长这样:

代码语言:javascript
复制
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 开发环境

  1. Python 3.7
  2. HttpRunner 2.2.5 # pip install httprunner hrun -V 查看版本,代表安装成功 hrun -h 查看帮助信息

2.2 项目文件结构

项目文件结构分为2种,一种是测试用例分层结构,一种是测试用例不分层结构。

代码语言:javascript
复制
hrun --startproject demo  # 分层脚手架

利用项目脚手架直接创建测试用例分层结构,一个基本的测试用例分层结构就搞定了(懒人专用)

2.3 接口实例

  • 访问地址: http://127.0.0.1:8000/atp/mock/sjjh/clwz
  • 请求类型: POST
  • 请求头部: application/json
  • 请求参数:
代码语言:javascript
复制
{"productid":"3100721","carid":"京A89561"}
  • 返回参数:
代码语言:javascript
复制
{"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格式脚本

代码语言:javascript
复制
- 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格式脚本

代码语言:javascript
复制
[{
        "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到脚本目录下,运行

代码语言:javascript
复制
hrun post_api.yaml

或者执行json文件

代码语言:javascript
复制
hrun post_api.json

执行结果如下

2.7 查看测试报告

请求

响应

检查点

统计

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT测试前沿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档