解锁接口关联测试新技能!HttpRunner教你如何轻松搞定。

news/2024/10/31 0:14:47/

 目录

 前言:

一、安装HttpRunner

二、编写测试用例

三、运行测试用例

四、实现接口关联测试

五、总结


 前言:

在接口自动化测试中,一个常见的场景就是需要对多个接口进行关联测试,例如登录后获取token,再利用token进行其他接口的访问等。这时候我们就需要使用HttpRunner在测试过程中实现接口之间的关联。

HttpRunner是一款基于Python的开源接口自动化测试框架,它支持对接口进行参数化、数据驱动、关联等操作,非常适用于接口测试。在本篇文章中,我们将介绍如何使用HttpRunner来实现接口的关联测试。

一、安装HttpRunner

首先,我们需要安装HttpRunner。可以通过pip来进行安装:

pip install httprunner

安装成功后,可以通过以下命令来验证是否安装成功:

hrun -V

如果出现版本号,则表示安装成功。

二、编写测试用例

在进行接口关联测试前,我们需要编写测试用例。这里以登录接口和获取用户信息接口为例,编写如下测试用例:

config:name: HttpRunner Demobase_url: http://localhost:8080testcases:
- name: user loginrequest:url: /loginmethod: POSTheaders:Content-Type: application/jsonjson:username: testuserpassword: testpassvalidate:- eq: [status_code, 200]- in: [headers.Content-Type, application/json]- json_eq: [body, { "code": 0, "msg": "success", "data": {"token": "testtoken"} }]- name: get user inforequest:url: /userinfomethod: GETheaders:Authorization: $tokenvalidate:- eq: [status_code, 200]- in: [headers.Content-Type, application/json]- json_eq: [body, { "code": 0, "msg": "success", "data": { "username": "testuser", "age": 20 } }]

在以上测试用例中,我们首先发送登录请求,获取一个token。然后在下一步请求中,将token作为请求头发送,获取用户信息。注意到在第二个请求中,我们使用了$token这个变量,它的值就是上一个请求中返回的数据。

三、运行测试用例

完成测试用例编写后,我们可以使用HttpRunner来运行测试用例。可以通过以下命令来执行测试:

hrun tests/login.yaml

其中,login.yaml为我们编写的测试用例文件名。

如果测试用例执行成功,则会输出类似以下的信息:

------------------------ test result ------------------------
tests/login.yaml
    ✓ user login
    ✓ get user info

    time: 0.078s, status: PASS
 

在此输出信息中,我们可以看到两个测试用例都执行成功了。

四、实现接口关联测试

现在,我们来实现接口之间的关联测试。在HttpRunner中,我们可以通过提取前一个请求的返回结果,并在后一个请求中使用。具体实现方法是通过extract和variables来实现。

首先,我们需要在登录请求中提取token:

- name: user loginrequest:url: /loginmethod: POSTheaders:Content-Type: application/jsonjson:username: testuserpassword: testpassextract:- token: content.data.tokenvalidate:- eq: [status_code, 200]- in: [headers.Content-Type, application/json]- json_eq: [body, { "code": 0, "msg": "success", "data": {"token": "testtoken"} }]

在以上测试用例中,我们新增了extract字段,并指定了一个变量token,它的值为content.data.token。这里的content就是响应结果的json,可以通过content来获取响应结果中的各个字段。这里我们提取了响应结果中的token字段,并将其保存在了变量token中。

在获取用户信息请求中,我们可以使用变量$token来获取之前提取的token值:

- name: get user inforequest:url: /userinfomethod: GETheaders:Authorization: $tokenvalidate:- eq: [status_code, 200]- in: [headers.Content-Type, application/json]- json_eq: [body, { "code": 0, "msg": "success", "data": { "username": "testuser", "age": 20 } }]

在以上测试用例中,我们引用了变量$token,它的值就是之前提取的token值。这样,我们就成功实现了接口之间的关联,即通过提取前一个请求的返回结果,并在后一个请求中使用,来完成接口关联测试。

五、总结

在本文中,我们介绍了如何使用HttpRunner实现接口关联测试。通过提取前一个请求的返回结果,并在后一个请求中使用,我们可以轻松实现接口之间的关联。这是HttpRunner非常强大的一项功能,也是接口测试中不可或缺的一环。

记住,接口测试不仅是单独接口的测试,更是对接口之间关联以及接口与业务逻辑之间的测试。只有熟练掌握这些技巧,我们才能为我们的软件产品提供高质量的服务。

 作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试的必须品,如果你用得到的话可以直接拿走,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

方式:留【自动化测试】即可
【自动化测试交流】:574737577(备注ccc)http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=aHIGBYHUghap5i_4GNUt5dSxrYN_BA3m&authKey=9rU8HTM3ZRVPSeuHVBKHFTEvsTYxn1bDFX9YLoUPJdvXKIPtlRv%2FcKMe0gjD6uHR&noverify=0&group_code=574737577


http://www.ppmy.cn/news/107864.html

相关文章

【LINUX】进程间信号

文章目录 前言铺垫信号 信号的产生1、终端按钮产生信号2、调用系统函数向进程发送信号3、软件条件产生信号4、硬件异常产生信号 信号的保存补充:位图数据结构信号的处理结语 前言 铺垫 1、日常中我们能经常感受到信号的存在:红灯停绿灯行、三更鸡鸣、妈…

双二阶环路滤波器时频域分析

【设计目标】对双二阶环路滤波器进行时频域分析和处理的基本方法 【设计工具】MATLAB【设计要求】 1)分析典型的双二阶环路滤波器电路:低通、高通、带通、带阻 2)理论分析各滤波电路的系统函数 3)利用Matlab分析各滤波电路的系统函数的频率特性(幅频、相频)、零极点分布…

不到一分钟,即刻拥有这 22 款插件主题

开源 API 管理工具 Postcat 的插件广场最近上新了插件主题,看了看,真的有几款我很喜欢。可能会有朋友有跟我一样的疑问,如何拥有这些好玩的插件主题。 第一步当然是找到 Postcat ,安装 Postcat ! 找到插件广场 浏览并选择喜欢的主…

视觉与激光雷达融合3D检测(一)AVOD

1.概述 AVOD(Aggregate View Object Detection)和MV3D类似,是一种融合3维点云和相机RGB图像的三维目标检测算法. 不同的是: MV3D中融合了相机RGB图像,点云BEV映射和FrontView映射,而AVOD则只融合相机RGB图像和点云BEV映射. 从网络结果来看,AVOD采用了基…

zabbix监控山石防火墙

一、导入监控模板 <Template Net Hillstone StoneOS SNMPv2> 导入前请确保zabbix内置的模板Template Net Network Generic Device SNMPv2存在。 支持山石E系列和X系列防火墙 兼容Zabbix 4.x和5.x。 二、监控内容 SNMP状态和接口速率由Template Net Network Generic De…

Spring5 学习笔记

前置知识&#xff1a; 掌握Java基础知识&#xff08;特别是反射&#xff09;掌握Java注解掌握XML掌握Maven Spring5学习笔记 1、Spring概述1.1、简介1.2、优点1.3、组成1.4、拓展 2、IOC理论推导2.1、分析实现2.2、IOC本质 3、HelloSpring3.1、导入jar包3.2、编写代码3.3、思考…

《ChatGPT Prompt Engineering for Developers》课程-提示词原则

编写 Prompt 的原则 本章的主要内容为编写 Prompt 的原则&#xff0c;在本章中&#xff0c;我们将给出两个编写 Prompt 的原则与一些相关的策略&#xff0c;你将练习基于这两个原则来编写有效的 Prompt&#xff0c;从而便捷而有效地使用 LLM。 一、环境配置 本教程使用 Open…

条件变量基本使用

一、条件变量 应用场景&#xff1a;生产者消费者问题&#xff0c;是线程同步的一种手段。 必要性&#xff1a;为了实现等待某个资源&#xff0c;让线程休眠。提高运行效率 int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex); int pthr…