httprunner 使用总结
HttpRunner 概念
HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。
相关操作
- 参数提取(extract)和参数引用($var)
# 第一个接口/api/get-token的响应结果为:
{"success": true, "token":"ZQkYhbaQ6q8UFFNE"}
# 提取 token,采用 content.token
'extract':[
{'token':'content.token'}
]
# token 作为提取后的参数名称,可以在后续使用 $token 进行引用
'headers':{
'token':'$token',
"Content-Type": "application/json",
"device_sn": "FwgRiO7CNA50DSU",
}
- 公共配置全局化
{
"config": {
"name": "testcase description",
"variables": [],
"request": {
"base_url":"http://127.0.0.1:5000",
"headers": {
"User-Agent":"python-requests/2.18.4",
"device_sn": "FwgRiO7CNA50DSU",
"Content-Type":"application/json"
}
}
}
}
# 其中 name 为测试用例的名称,在测试报告中将作为标题
- debugtalk.py 文件中定义相关变量和函数
import hashlib
import hmac
import random
import string
SECRET_KEY = "DebugTalk"
def gen_random_string(str_len):
random_char_list = []
for _ in range(str_len):
random_char = random.choice(string.ascii_letters + string.digits)
random_char_list.append(random_char)
random_string = ''.join(random_char_list)
return random_string
def get_sign(*args):
content = ''.join(args).encode('ascii')
sign_key = SECRET_KEY.encode('ascii')
sign = hmac.new(sign_key, content, hashlib.sha1).hexdigest()
return sign
- 变量的申明(variables)、引用($var)和调用函数(${func($var)})
# 申明变量:生成 15 位长度的随机字符串并赋值给 device_sn 的代码为:
"variables": [
{"device_sn": "${gen_random_string(15)}"}
]
# 引用变量:使用 $user_agent、$device_sn、$os_platform、$app_version 根据签名算法生成 sign 值的代码
"json": {
"sign": "${get_sign($user_agent, $device_sn, $os_platform, $app_version)}"
}
- 数据驱动
# 创建用户的接口中对 user_id 进行参数化,参数化列表为 1001~1004,并且取值方式为顺序取值
"config": {
"parameters": [
{"user_id": [1001, 1002, 1003, 1004]}
]
}
- 测试运行
# 运行单个测试用例( hrun 命令外加单个测试用例文件的路径)
$ hrun filepath/testcase.yml
# 运行多个测试用例使用 (hrun 命令外加多个测试用例文件的路径)
$ hrun filepath1/testcase1.yml filepath2/testcase2.yml
# 运行指定文件夹下所有的测试用例(使用 hrun 命令外加文件夹的路径):
$ hrun testcases_folder_path
# 测试用例在运行过程中,遇到失败时不再继续运行后续用例
$ hrun filepath/testcase.yml --failfast
# 显示指定日志级别以上的日志
$ hrun tests/data/demo_parameters.yml --log-level debug
- 测试报告生成
# 指定报告名称
$ hrun docs/data/demo-quickstart-2.yml --html-report-name demo
- hook 机制,hook 函数定义在 debugtalk.py 里
- 用例层,config 新增关键字 setup_hooks 和 teardown_hooks,为全局的,setup_hooks 在所有测试前执行,teardown_hooks 所有用例执行后执行一次。
- config:
name: basic test with httpbin
request:
base_url: http://127.0.0.1:3458/
setup_hooks:
- ${hook_print(setup)}
teardown_hooks:
- ${hook_print(teardown)}
- 测试步骤层,test 中新增关键字 setup_hooks 和 teardown_hooks,为局部变量,当前测试用例测试前后执行
"test": {
"name": "get token with $user_agent, $os_platform, $app_version",
"request": {
"url": "/api/get-token",
"method": "POST",
"headers": {
"app_version": "$app_version",
"os_platform": "$os_platform",
"user_agent": "$user_agent"
},
"json": {
"sign": "${get_sign($user_agent, $device_sn, $os_platform, $app_version)}"
}
},
"validate": [
{"eq": ["status_code", 200]}
],
"setup_hooks": [
"${setup_hook_prepare_kwargs($request)}",
"${setup_hook_httpntlmauth($request)}"
],
"teardown_hooks": [
"${teardown_hook_sleep_N_secs($response, 2)}"
]
}
# test 中 name 为测试步骤的名称,在测试报告中将作为测试步骤的名称
- 参数定义和数据源指定
- 参数名称的定义分为两种情况:
- 独立参数单独进行定义;
- 多个参数具有关联性的参数需要将其定义在一起,采用短横线(-)进行连接。
- 数据源指定支持三种方式:
- 在 YAML/JSON 中直接指定参数列表
- 通过内置的 parameterize(可简写为P)函数引用 CSV 文件
- 调用 debugtalk.py 中自定义的函数生成参数列表
- 参数名称的定义分为两种情况:
# user_id 通过引用 csv 文件
- config:
name: "demo"
parameters:
- user_agent: ["iOS/10.1", "iOS/10.2", "iOS/10.3"]
- user_id: ${P(user_id.csv)}
- username-password: ${get_account(10)}
# 关联性的多个参数
- config:
parameters:
- username-password:
- ["user1", "111111"]
- ["user2", "222222"]
- ["user3", "333333"]
httprunner 使用总结的更多相关文章
- HttpRunner Manager接口自动化测试平台实践(Windows)
1. 源码下载 github: https://github.com/HttpRunner/HttpRunnerManager 下载后放入项目目录,结构如下: 2.依赖环境 根据根目录require ...
- HttpRunner框架(一)
HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求. 中文使用文档地址:h ...
- Httprunner学习
一.简介 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求. 核心特性: 继 ...
- HttpRunner接口自动化测试框架
简介 2018年python开发者大会上,了解到HttpRuuner开源自动化测试框架,采用YAML/JSON格式管理用例,能录制和转换生成用例功能,充分做到用例与测试代码分离,相比excel维护测试 ...
- HttpRunner安装笔记(1)安装环境准备:pyenv安装
HttpRunner建议在Python 3.4 及以上版本,但是centos有其他功能模块基于python2.7,所以使用pyenv安装多版本pyhon版本. pyenv 是一款特别好用的Python ...
- 接口自动化测试框架HttpRunner
接口自动化测试框架 https://github.com/HttpRunner/HttpRunner http://debugtalk.com/post/ApiTestEngine-api-test- ...
- HttpRunner 参数化数据驱动
HttpRunner 2.0 参数化数据驱动案例,废话不说,直接上干货. 1.测试用例目录结构 api:接口集 testcases:测试用例 testsuites:测试套件 data: ...
- 基于HttpRunner的接口自动化测试平台HttpRunnerManager(二)
https://github.com/HttpRunner/HttpRunnerManager HttpRunnerManager Design Philosophy 基于HttpRunner的接口自 ...
- 接口自动化 Windows + HttpRunner 初探(一)
运行环境 HttpRunner 是一个基于 Python 开发的测试框架,可以运行在 macOS.Linux.Windows 系统平台上. HttpRunner 的开发环境为 macOS + Pyth ...
随机推荐
- git pull和git fetch命令
git pull和git fetch命令 git pull git pull命令的作用是取回远程主机某个分支的更新,在与本地指定分支合并,格式如下: $ git pull <远程主机名>& ...
- Apache Cordova vs Adobe PhoneGap: the differences and which one to use
http://www.makehybridapps.com/2014/06/09/cordova-vs-phonegap-the-differences-and-which-one-to-use/
- 使用phpExcel导出excel文件
function export($log_list_export) { require "../include/phpexcel/PHPExcel.php"; require &q ...
- mysql的头文件
yum install mysql /usr/include/mysql yum install mysql-devel
- 什么是@guid
我将给大家讲解史上最通俗一同guid与ID的区别...
- 构建ASP.NET网站十大必备工具
最近使用ASP.NET为公司构建了一个简单的公共网站(该网站的地址:http://superexpert.com/).在这个过程中,我们使用了数量很多的免费工具,如果把构建ASP.NET网站的必备工具 ...
- PythonWEB框架之Flask--2
10.请求扩展 1 before_request 类比django中间件中的process_request,在青丘收到之前绑定一个函数做一些事情 #基于它做用户登录认证 @app.before_req ...
- SQL查询优化的一些建议
使用批量查询,而不是N次循环查询! 重复的数据,不要重复获取: 根据需要,按需要获取表字段,而不是SELECT *: 针对频繁的搜索字段,建立必要的索引,以加快查询速度: 使用关联查询,而不是粗暴地类 ...
- Django-组件
https://www.cnblogs.com/yuanchenqi/articles/8034442.html
- [MySQL]变更数据库字符集
my.cnf [mysqld] character-set-server=utf8 [mysqld_safe] default-character-set=utf8 -- 创建数据库时,设置数据库的编 ...