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

前言

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

使用环境:

  • python 3.6

  • httprunner 1.5.8

具有以下优点:

  • 继承 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

安装完成后检查版本号,显示1.5.8就可以正常使用了

hrun -V

登录案例

登录接口获取token这是最常见的场景了,接下来以独立接口为案例,具体的接口开发需要用到django,

查看这篇python测试开发django-60.token登录(TokenAuthentication)

登录接口相关文档信息如下:

  • 访问地址:

    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

- 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文件,内容如下

[{
"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)

2019第一期《python测试开发》课程,10月13号开学!

本期上课时间:10月13号-12月8号,每周六、周日晚上20:30-22:30

(0)

相关推荐