HttpRunner 概念

HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。

相关操作

  1. 参数提取(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",
}
  1. 公共配置全局化
{
"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 为测试用例的名称,在测试报告中将作为标题
  1. 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
  1. 变量的申明(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)}"
}
  1. 数据驱动
# 创建用户的接口中对 user_id 进行参数化,参数化列表为 1001~1004,并且取值方式为顺序取值
"config": {
"parameters": [
{"user_id": [1001, 1002, 1003, 1004]}
]
}
  1. 测试运行
# 运行单个测试用例( 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
  1. 测试报告生成
# 指定报告名称
$ hrun docs/data/demo-quickstart-2.yml --html-report-name demo
  1. 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 为测试步骤的名称,在测试报告中将作为测试步骤的名称
  1. 参数定义和数据源指定

    1. 参数名称的定义分为两种情况:

      • 独立参数单独进行定义;
      • 多个参数具有关联性的参数需要将其定义在一起,采用短横线(-)进行连接。
    2. 数据源指定支持三种方式:
      • 在 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"]

参数定义详见:

https://cn.httprunner.org/advanced/parameters/

httprunner 使用总结的更多相关文章

  1. HttpRunner Manager接口自动化测试平台实践(Windows)

    1. 源码下载 github: https://github.com/HttpRunner/HttpRunnerManager 下载后放入项目目录,结构如下: 2.依赖环境  根据根目录require ...

  2. HttpRunner框架(一)

    HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求. 中文使用文档地址:h ...

  3. Httprunner学习

    一.简介 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求. 核心特性: 继 ...

  4. HttpRunner接口自动化测试框架

    简介 2018年python开发者大会上,了解到HttpRuuner开源自动化测试框架,采用YAML/JSON格式管理用例,能录制和转换生成用例功能,充分做到用例与测试代码分离,相比excel维护测试 ...

  5. HttpRunner安装笔记(1)安装环境准备:pyenv安装

    HttpRunner建议在Python 3.4 及以上版本,但是centos有其他功能模块基于python2.7,所以使用pyenv安装多版本pyhon版本. pyenv 是一款特别好用的Python ...

  6. 接口自动化测试框架HttpRunner

    接口自动化测试框架 https://github.com/HttpRunner/HttpRunner http://debugtalk.com/post/ApiTestEngine-api-test- ...

  7. HttpRunner 参数化数据驱动

    HttpRunner 2.0 参数化数据驱动案例,废话不说,直接上干货. 1.测试用例目录结构      api:接口集 testcases:测试用例    testsuites:测试套件 data: ...

  8. 基于HttpRunner的接口自动化测试平台HttpRunnerManager(二)

    https://github.com/HttpRunner/HttpRunnerManager HttpRunnerManager Design Philosophy 基于HttpRunner的接口自 ...

  9. 接口自动化 Windows + HttpRunner 初探(一)

    运行环境 HttpRunner 是一个基于 Python 开发的测试框架,可以运行在 macOS.Linux.Windows 系统平台上. HttpRunner 的开发环境为 macOS + Pyth ...

随机推荐

  1. .net core webapi 部署windows server 2008 r2 笔记

    WebAPI部署文档 安装dotnet-dev-win-x64.1.0.4 安装DotNetCore.1.1.0-WindowsHosting 安装vc_redist.x64 安装Windows6.1 ...

  2. Java jdk 8 新特性

    list 统计(求和.最大.最小.平均) 第一种方式 int suma = listUsers.stream().map(e -> e.getAge()).reduce(Integer::sum ...

  3. Ubuntu下的网络服务

    一.Telnet Telnet是teletype network的缩写,表示远程登录协议和方式,分为Telnet客户端和Telnet服务器程序. Telnet服务虽然也属于客户机/服务器模型的服务,但 ...

  4. [Jmeter]Xpath获取元素某个属性的值,以及获取最后一个元素某个属性的值

    XPath获取元素某个属性的值 XPath query:  clients/attribute::total XPath获取最后一个元素某个属性的值 XPath query:   /clients/c ...

  5. 【附案例】UI交互设计不会做?设计大神带你开启动效灵感之路

    随着网络技术的创新发展,如今UI交互设计应用越来越广泛,显然已经成为设计的主流及流行的必然趋势.UI界面交互设计中的动效包括移动,滑块,悬停效果,GIF动画等.UI界面交互设计为何越来越受到青睐?它有 ...

  6. 安卓编译 translate error Lint: How to ignore “<key> is not translated in <language>” errors?

    Add following at the header of your strings.xml file <resources xmlns:tools="http://schemas. ...

  7. cocos2d-js 安卓自定义本地通知功能

    安卓新手,笔记有理解不当的地方望指出,经过几天折腾终于可以实现类似ios的本地通知功能(ios就几行代码),可能有第三方sdk可以方便实现,暂时没去找 思路: 1. startService 和bin ...

  8. android 混淆文件proguard.cfg详解 (转载)

    -injars  androidtest.jar[jar包所在地址] -outjars  out[输出地址] -libraryjars    'D:\android-sdk-windows\platf ...

  9. 2018.09.27 bzoj2510: 弱题(概率dp+循环矩阵优化)

    传送门 简单概率dp. 显然每次转移的式子可以用一个矩阵表示出来: 这个是循环矩阵. 因此只用维护第一行快速幂一波就行了. 代码: #include<bits/stdc++.h> #def ...

  10. Django入门与实践-第18章:访问已登录用户(完结)

    http://127.0.0.1:8000/boards/1/topics/1/ #boards/views.py @login_required def new_topic(request, pk) ...