前言

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

具有以下优点:

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

环境准备

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

使用pip安装

pip install httprunner==1.5.8

安装完成后检查版本号

hrun -V

使用案例

登录之后获取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

# 上海悠悠,QQ交流群:750815713
- 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文件,内容如下

# 上海悠悠,QQ交流群:750815713
[{
"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.yaml
login case1
INFO POST http://127.0.0.1:8000/api/v1/login/
INFO status_code: 200, response_time(ms): 414.33 ms, response_length: 109 bytes
INFO start to validate.
. ----------------------------------------------------------------------
Ran 1 test in 0.419s OK
INFO Start to render Html report ...
INFO Generated Html report: D:\soft\untitled\reports\1568906898.html D:\soft\untitled>

查看测试报告

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

点开log可以查看详情

请求(request)

返回 (response)

断言 (Validators)

httprunner学习1-环境与登录接口案例的更多相关文章

  1. httprunner学习3-extract提取token值参数关联(上个接口返回的token,传给下个接口请求参数)

    前言 如何将上个接口的返回token,传给下个接口当做请求参数?这是最常见的一个问题了. 解决这个问题其实很简单,我们只需取出token值,设置为一个中间变量a,下个接口传这个变量a就可以了.那么接下 ...

  2. Mybatis环境搭建中的案例分析 及 如果自己编写DAO接口的实现类

    Mybatis环境搭建中的案例分析public static void main (String[] args) throws Exception { //读配置文件 //第一个: 使用类加载器,只能 ...

  3. HttpRunner学习8--使用debugtalk.py辅助函数

    前言 在HttpRunner中,我们的测试用例都是写在 YAML/JSON 文件中,有时候我们想借助代码来实现某些较复杂的功能,但在 YAML/JSON 中是无法直接写代码来处理的,这个时候,我们可以 ...

  4. HttpRunner学习7--引用CSV文件数据

    前言 在之前的文章中,我们已经学习了 parameters 参数化,是在测试脚本中直接指定参数列表.这种方法简单易用,但如果我们的参数列表数据比较多,这种方法可能就不太适合了. 当数据量比较大的时候, ...

  5. HttpRunner学习6--使用parameters参数化

    前言 在使用HttpRunner测试过程中,我们可能会遇到这种场景: 账号登录功能,需要输入用户名和密码,设计测试用例后有 N 种组合情况 如果测试组合比较少,比如只有2个,那我们直接在YAML脚本中 ...

  6. HttpRunner学习5--使用variables声明变量

    前言 在HttpRunner中,如果需要声明变量,可以通过关键字 variables 来完成,要引用声明的变量,则是通过 $+变量名 (如 $token )来实现.variables 可以在 conf ...

  7. httprunner学习2-har2case录制生成脚本

    前言 复制毁一生,录制穷三代,如果你只是因为不想写脚本,而去录制脚本,那我建议你还是别学录制了. 录制脚本,只是一个过渡,从0到1的一个过渡,如果让你直接写脚本,你会无从下手,可以将录制的脚本快速转化 ...

  8. supervessel-免费云镜像︱GPU加速的Caffe深度学习开发环境

    开发环境介绍 在SuperVessel云上,我们为大家免费提供当前火热的caffe深度学习开发环境.SuperVessel的Caffe有如下优点: 1) 免去了繁琐的Caffe环境的安装配置,即申请即 ...

  9. HttpRunner学习3--extract提取数据和引用

    前言 在HttpRunner中,我们要想从当前 HTTP 请求的响应结果中提取参数,可以通过 extract 关键字来实现. 本人环境:HttpRunner V1.5.8 测试场景 在这里,我将以一个 ...

随机推荐

  1. IntelliJ Idea 常用10款插件(提高开发效率)

    出自:https://blog.csdn.net/weixin_41846320/article/details/82697818 插件安装方式: 1.Background Image Plus 这款 ...

  2. nginx的rtmp搭建流媒体服务器实现直播流

    最近自己搞了一个用nginx的rtmp来搭建流媒体服务器,从而实现直播的过程,参考了网上很多资料,有些资料对于初学者来说比较难以理解,在此将我搭建的过程记录下来,分享给大家. 1.下载nginx-rt ...

  3. hbase 操作

    视频随笔视频地址:hbase教程 1.与传统关系型数据库的区别 hbase 传统分布式   单机列动态增减   建表时候指定只有字符串一种数据类型   数值,字符空值不被存储   存储不支持SQL 查 ...

  4. 【bat】【windows】通过端口杀死进程

    简单的bat处理,把指定端口集合杀死相应的进程,就是杀死对应的pid @echo off & setlocal EnableDelayedExpansion ]= ]= ]= ]= ]= fo ...

  5. jquery ajax分页写法

    jquery ajax分页写法我用的是laypage插件 前端代码<pre> function demo(curr) { $.getJSON('/home/index/getinfo', ...

  6. 防火墙阻止了虚拟机与主机之间互相ping通解决方案

    1. 打开WIN10防火墙,选择高级设置 2.入站规则 3.找到配置文件类型为“公用”的“文件和打印共享(回显请求 – ICMPv4-In)”规则,设置为允许. 如果上面步骤没有问题还ping不通,可 ...

  7. window安装mysql8.0解决大部分客户端无法连接问题登陆问题

    https://blog.csdn.net/u013308810/article/details/80114021

  8. Android调试桥 adb安装详解

    Android调试桥(adb) 一.简介 Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信.adb 命令便于执行各种设备操作(例如安装和调试应用),并提供对 Uni ...

  9. Jenkins版本迭代以及回滚

    一.摘要 在上一篇文章,链接如下: https://www.cnblogs.com/xiao987334176/p/11434849.html 镜像打的是latest版,如果需要回滚的话,就比较麻烦了 ...

  10. appium_获取元素状态

    元素的属性我们经常会用到,当定位到某个元素后,有时会需要用到这个元素的text值.className.resource-id.checked等.  一般标准的属性我们都可以通过get_attribut ...