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. Spring框架的核心功能之AOP概述

    1. 什么是AOP的技术? * 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程 * AOP是一种编程范式,隶属于软工范畴,指导开发者如何组织程序结构 ...

  2. 【转】MEF程序设计指南五:迟延(Lazy)加载导出部件(Export Part)与元数据(Metadata)

    MEF中使用导出与导入,实质上就是对一个对象的实例化的过程,通过MEF的特性降低了对象的直接依赖,从而让系统的设计达到一种高灵活.高扩展性的效果.在具体的设计开发中,存在着某些对象是不需要在系统运行或 ...

  3. CF 1023D Array Restoration - 线段树

    题解 非常容易想到的线段树, 还可以用并查集来. 还有一位大神用了$O(n)$ 就过了Orz 要判断是否能染色出输入给出的序列,必须满足两个条件: 1. 序列中必须存在一个$q$ 2. 两个相同的数$ ...

  4. struts spring 整合

    错误 :Unable to load jar:file:WEB-INF/lib/struts2-spring-plugin-2.3.15.1.jar!/struts-default.xml 原因: 我 ...

  5. Eclipse 中 Could not find *.apk的解决方案

    Eclipse 中 Could not find *.apk的解决方案 有时候debug的时候出现Could not find *.apk 特别是导入别人的例子的时候 1.选择properties-& ...

  6. jquery ui中的dialog,官网上经典的例子

    jquery ui中的dialog,官网上经典的例子   jquery ui中dialog和easy ui中的dialog很像,但是最近用到的时候全然没有印象,一段时间不用就忘记了,这篇随笔介绍一下这 ...

  7. Django介绍(3)

    https://www.cnblogs.com/yuanchenqi/articles/5786089.html

  8. (匹配)Oil Skimming -- hdu --4185

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=4185 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  9. 伪共享(False Sharing)

    原文地址:http://ifeve.com/false-sharing/ 作者:Martin Thompson  译者:丁一 缓存系统中是以缓存行(cache line)为单位存储的.缓存行是2的整数 ...

  10. lock wait timeout exceeded; try restarting transactio解决方案

    问题原因:       今天线上环境,突然出现一个问题,追踪原因是数据库中的一条语句报错,错误内容:lock wait timeout exceeded; try restarting transac ...