专栏首页从零开始学自动化测试httprunner 2.x学习1-环境与登录接口案例

httprunner 2.x学习1-环境与登录接口案例

前言

由于之前写过一个 httprunner 系列是针对 1.5.8 版本写的教程, httprunner版本更新的还挺快的,最近已经到3.x版本了,看了下改动还是挺大的。 但是考虑到目前还是有很多公司的小伙伴在用 2.x 版本,所以这里在之前 1.5.8 基础上快速的更新一遍,重复的内容就直接复制过来的 对于直接看2.x 版本的小伙伴 也是可以快速上手的,这样就不用纠结1.x版本和2.x版本的区别了。

HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试。

具有以下优点:

  • 继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求
  • 采用 YAML/JSON 的形式描述测试场景,保障测试用例描述的统一性和可维护性
  • 借助辅助函数(debugtalk.py),在测试脚本中轻松实现复杂的动态计算逻辑
  • 支持完善的测试用例分层机制,充分实现测试用例的复用
  • 测试前后支持完善的 hook 机制
  • 响应结果支持丰富的校验机制
  • 基于 HAR 实现接口录制和用例生成功能(har2case)
  • 结合 Locust 框架,无需额外的工作即可实现分布式性能测试
  • 执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完美结合
  • 测试结果统计报告简洁清晰,附带详尽统计信息和日志记录
  • 极强的可扩展性,轻松实现二次开发和 Web 平台化

分层机制 是2.x 版本才有的功能, 1.x 版本不支持分层机制

环境准备

httprunner目前有3个版本,1.x和2x版本和3.x版本,本篇以2.5.7版本为学习的基础版本

使用pip安装

pip install httprunner==2.5.7

安装完成后检查版本号

hrun -V

D:\soft\venv_hrun\Scripts>hrun -V
2.5.7

使用案例

登录之后获取token这是最常见的场景了,接下来以独立接口为案例,登录接口这个是访问我本地的接口,你们是没法访问的, 具体的登录接口开发需要用到django,查看这篇https://www.cnblogs.com/yoyoketang/p/11517213.html 登录接口相关文档信息如下:

  • 访问地址: http://127.0.0.1:8000/api/v1/login/
  • 请求类型: POST
  • 请求头部: application/json
  • 请求参数: {“username”:”test”, “password”:”123456”}

使用httpapi命令行工具,访问后测试接口报文信息如下

C:\Users\dell>http http://127.0.0.1:8000/api/v1/login/  username=test password=123456 -v
POST /api/v1/login/ HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 42
Content-Type: application/json
Host: 127.0.0.1:8000
User-Agent: HTTPie/1.0.3

{
    "password": "123456",
    "username": "test"
}

HTTP/1.1 200 OK
Allow: POST, OPTIONS
Content-Length: 109
Content-Type: application/json
Date: Thu, 19 Sep 2019 15:15:18 GMT
Server: WSGIServer/0.2 CPython/3.6.0
Vary: Accept, Cookie
X-Frame-Options: SAMEORIGIN

{
    "code": 0,
    "msg": "login success!",
    "token": "000038efc7edc7438d781b0775eeaa009cb64865",
    "username": "test"
}

编写yml格式脚本

接下来转换成httprunner的YAML格式脚本用例,保存为test_login.yml

# 上海悠悠,httprunner QQ交流群:1121184576
- config:
    name: logincase
    variables: {}
- test:
    name: login case1
    request:
        url: http://127.0.0.1:8000/api/v1/login/
        method: POST
        headers:
            Content-Type: application/json
            User-Agent: python-requests/2.18.4
        json:
            username: test
            password: 123456
    validate:
        - eq: [status_code, 200]
        - eq: [headers.Content-Type, application/json]
        - eq: [content.msg, login success!]
        - eq: [content.code, 0]

json格式

如果你不喜欢yaml格式,用json也是可以的。新建一个test_login2.json文件,内容如下

# 上海悠悠,httprunner QQ交流群:1121184576
[{
        "config": {
            "name": "logincase",
            "variables": {}
        }
    },
    {
        "test": {
            "name": "login case1",
            "request": {
                "url": "http://127.0.0.1:8000/api/v1/login/",
                "method": "POST",
                "headers": {
                    "Content-Type": "application/json",
                    "User-Agent": "python-requests/2.18.4"
                },
                "json": {
                    "username": "test",
                    "password": "123456"
                }
            },
            "validate": [{
                    "eq": ["status_code", 200]
                },
                {
                    "eq": ["headers.Content-Type", "application/json"]
                },
                {
                    "eq": ["content.msg", "login success!"]
                }, {
                    "eq": ["content.code", 0]

                }
            ]
        }
    }
]

运行用例

运行用例很简单,直接在cmd里面,cd到test_login.yml目录,运行

hrun test_login.yml

或者执行json文件

hrun test_login2.json

执行结果如下

D:\soft\untitled>hrun test_login.yml
INFO     HttpRunner version: 2.5.7
INFO     Start to run testcase: logincase
login case1
INFO     POST http://49.235.92.12:6009/api/v1/login/
INFO     status_code: 200, response_time(ms): 180.63 ms, response_length: 109 bytes

.

----------------------------------------------------------------------
Ran 1 test in 0.184s

OK
INFO     Start to render Html report ...
INFO     Generated Html report: D:\soft\untitled\reports\20200612T111815.719602.html

D:\soft\untitled>

查看测试报告

运行完成后会在当前目录生成一个report文件夹,里面会有一个html格式的报告文件,按时间戳生成的

点开log可以查看详情

请求(request)

返回 (response)

断言 (Validators)

这一篇跟1.x版本没什么区别

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang),作者:上海悠悠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • httprunner学习1-环境与登录接口案例

    HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试。

    上海-悠悠
  • python测试开发django-15.查询结果转json(serializers)

    django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据...

    上海-悠悠
  • python接口自动化2-发送post请求

    前言 发送post的请求参考例子很简单,实际遇到的情况却是很复杂的,首先第一个post请求肯定是登录了,但登录是最难处理的。登录问题解决了,后面都简单了。 一...

    上海-悠悠
  • httprunner学习1-环境与登录接口案例

    HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试。

    上海-悠悠
  • 丢给你一个txt并同时获取你shell

    听闻很多人知道这个漏洞,但是有一部分人能复现成功,一部分人复现不出来。这里我就我自己的复现经历给大家演示一下。

    天钧
  • 丢给你一个txt并同时获取你shell

    听闻很多人知道这个漏洞,但是有一部分人能复现成功,一部分人复现不出来。这里我就我自己的复现经历给大家演示一下。

    洛米唯熊
  • 网络文件操作(一)、json模块

    JSON(JavaScriptObjectNotation)格式最初是为JavaScript开发的,但随后成了一种常见文件格式,被包括python在内的众多语言...

    于小勇
  • 机器学习CS229:朴素贝叶斯&exercise6

    用朴素贝叶斯实现垃圾邮件分类器,解题代码如下 numTrainDocs = 700; numTokens = 2500; M = dlmread('F:...

    kalifa_lau
  • 业界 | Petuum提出对偶运动生成对抗网络:可合成逼真的视频未来帧和流

    机器之心
  • 云知声今年要量产三款芯片,还公布了多模态AI芯片规划

    昨天(1月2日)下午,云知声再次对外发声,公布了多模态AI芯片战略与规划,也带来了三款定位不同场景的AI芯片的最新进展。

    量子位

扫码关注云+社区

领取腾讯云代金券