接口自动化测试:HttpRunner基础

news2025/6/13 8:41:02

相关文档

HttpRunner V3.x中文文档
HttpRunner 用户指南
使用HttpRunner 3.x实现接口自动化测试

HttpRunner介绍

HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型。简单易用,功能强大,具有丰富的插件化机制和高度的可扩展能力。
在这里插入图片描述

yaml中支持的参数

config

在HttpRunner中,config参数可以支持以下关键字:

name: 测试配置的名称,一般用于描述测试的主要功能。
variables: 定义测试配置的全局变量,这些变量可以在整个测试配置中使用。
parameters: 用于参数化数据驱动,生成多个测试用例。
base_url: 定义接口请求的基础URL。
verify: 是否进行https证书验证,默认为True。
setup_hooks: 设置前置钩子,执行测试配置前执行一些特殊动作。
teardown_hooks: 设置后置钩子,执行测试配置后执行一些特殊动作。

teststeps

在HttpRunner中,teststeps参数可以支持以下关键字:

name: 测试步骤的名称,一般用于描述测试步骤的主要功能。
variables: 用于定义本测试步骤的局部变量。
extract: 用于从接口的响应结果中提取数据存储为变量,供后续的测试步骤使用。
validate: 用于定义接口响应结果的断言验证规则。
request: 用于定义接口请求的详细信息,包括url、method、params、data、headers、cookies等。
setup_hooks: 设置前置钩子,主要用于在测试步骤执行前执行一些特殊动作。
teardown_hooks: 设置后置钩子,主要用于在测试步骤执行后执行一些特殊动作。
include: 用于引入其他的测试用例。
testcase: 用于引入其他的测试用例作为当前测试步骤。

变量引用

$变量名${变量名}

PS:如果用例存在$符号,可通过 $$ 转义

变量优先级

step variables > session variables > parameter variables > config variables

yml格式测试用例示例

config:
  name: "test suite description"  # 测试套件描述
  variables:  # 定义全局变量
    var1: "value1"
    var2: "value2"
  parameters:  # 实现参数化数据驱动
    game: [game1, game2, game3]
  base_url: "http://your-base-url.com"  # 基础url
  verify: False  # 是否进行https证书验证
  setup_hooks:  # 配置前置hook
    - ${hook1()}
  teardown_hooks:  # 配置后置hook
    - ${hook2()}

teststeps:
- name: api_A
  variables:  # 定义局部变量
    var3: "value3"
  url: /api/a    # 接口A的url
  method: GET
  params:  # 定义请求参数
    key: value
  headers:  # 定义请求头
    Content-Type: "application/json"
  include: "login.yml" # 假设存在一个名为 login.yml 的测试用例,引用login.yml整个测试用例(包括配置和测试步骤),在当前测试步骤开始前执行
  extract:  # 提取接口A返回的data值,存储在变量data中
    - data: body.data.items
  validate:  # 断言验证
    - eq: ["status_code", 200]  # 判断响应状态码是否为200     
    - eq: ["content.status", "success"]  # 判断响应内容中的status是否为success
    - include: ["body.code", ["OK", "Receiver Buyer Same", "Receiver Not Exist", "Alipay Balance Not Enough"]] # 判断响应内容中的code是否等于后面列表中某一个值

- name: api_B
  setup_hooks: 
    - ${setup_hook()} # setup_hook是你自定义的前置钩子函数
  testcase: "api_b.yml" # 假设存在一个名为 api_b.yml 的测试用例,引用 api_b.yml 中的测试步骤,在当前测试步骤开始前执行
  url: /api/b    # 接口B的url
  method: POST
  headers:
    Content-Type: "application/json"
  data: # post类型接口参数可以用data或json或files
    param: $data  # 使用上一步提取的data作为接口B的参数
  validate:  # 断言验证
    - eq: ["status_code", 200]  # 判断响应状态码是否为200
    - eq: ["body.code", "OK"]  # 判断响应内容中的code是否为OK
  teardown_hooks: 
    - ${teardown_hook()} # teardown_hook是你自定义的后置钩子函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2407187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四&#xff…

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…

免费数学几何作图web平台

光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…

基于Springboot+Vue的办公管理系统

角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…

【网络安全】开源系统getshell漏洞挖掘

审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…

C++ 设计模式 《小明的奶茶加料风波》

👨‍🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…