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

news2024/10/5 20:26:24

 目录

 前言:

一、安装HttpRunner

二、编写测试用例

三、运行测试用例

四、实现接口关联测试

五、总结


 前言:

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

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

一、安装HttpRunner

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

pip install httprunner

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

hrun -V

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

二、编写测试用例

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

config:
  name: HttpRunner Demo
  base_url: http://localhost:8080

testcases:
- name: user login
  request:
    url: /login
    method: POST
    headers:
      Content-Type: application/json
    json:
      username: testuser
      password: testpass
  validate:
    - eq: [status_code, 200]
    - in: [headers.Content-Type, application/json]
    - json_eq: [body, { "code": 0, "msg": "success", "data": {"token": "testtoken"} }]

- name: get user info
  request:
    url: /userinfo
    method: GET
    headers:
      Authorization: $token
  validate:
    - 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 login
  request:
    url: /login
    method: POST
    headers:
      Content-Type: application/json
    json:
      username: testuser
      password: testpass
  extract:
    - token: content.data.token
  validate:
    - 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: /userinfo
    method: GET
    headers:
      Authorization: $token
  validate:
    - 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.coloradmin.cn/o/589444.html

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

相关文章

如何自学黑客?零基础自学黑客需要多久?

问题一:黑客如何学起? 必须从学习者的角度来看,如果你是一个已经学过编程,通晓几门语言的人那么这个答案就会和一个从没有接触过的计算机,甚至连什么叫高级语言还不知道的人有所区别的对待。 这就像是登珠穆朗玛峰一…

ARM实验5-流水灯仿真实验

一、实验名称:流水灯仿真实验 二、实验目的: 掌握ARM处理器的输入输出接口。掌握通过MDK提供的仿真功能,实现系统的仿真运行。通过该编程实验,进一步巩固和强化学生ARM汇编编程的能,ARM应用程序框架,培养…

chatgpt赋能python:Python中的主函数调用其它函数

Python中的主函数调用其它函数 Python语言是一种高级编程语言,它被广泛应用于大数据处理、人工智能、数据分析、网络编程以及Web开发等领域中。在Python中,我们可以使用函数来封装复杂的业务逻辑,使代码更加可读、可维护和可扩展。在本文中&…

基于docker部署testlink并集成mantis

使用docker pull命令拉取需要的镜像。由于testlink和mantis都需要存储相关数据,所以这里可以看到还拉取了一个mysql镜像。 # docker pull bitnami/testlink:1.9.16-r8 # docker pull vimagick/mantisbt # docker pull mysql:5.7.20 使用docker network命令中创建…

Flutter重构开发

最近学习了flutter技术,然后用flutter技术重构了线上项目的首页板块,较深入的理解flutter的状态管理和ui组件的使用,总结下遇到的几点问题。 - 使用gex的controller报错 Don’t use one refreshController to multiple SmartRefresher,It w…

2021年长三角高校数学建模竞赛B题锅炉水冷壁温度曲线解题全过程文档及程序

2021年长三角高校数学建模竞赛 B题 锅炉水冷壁温度曲线 原题再现: 在燃煤发电过程中,锅炉是一种重要的热能动力设备。它通过在炉膛中燃烧煤粉释放热量,将水加热成一定温度(或压力)的蒸汽,蒸汽再推动汽轮机…

C4d渲染农场的定义、应用领域和未来发展趋势

Cinema 4D(C4D)是一款常用于3D动画、建模和渲染的软件,由Maxon Computer开发。随着CG行业的不断发展和应用场景的多样化,C4D渲染农场成为了CG制作中不可或缺的一环。本文将深入介绍C4D渲染农场的概念、特点、应用以及未来发展趋势…

信创办公–基于WPS的EXCEL最佳实践系列 (规整数据摆放)

信创办公–基于WPS的EXCEL最佳实践系列 (规整数据摆放) 目录 应用背景操作步骤1、数据排序2、例如:职务按照 经理-主任-职员 排序3、排列第二种方法4、实操案例5、案例练习一方法一:通过公式函数增加辅助列方法二:用辅…

二分查找笔记

1.1 什么是算法? 定义 在数学和计算机科学领域,算法是一系列有限的严谨指令,通常用于解决一类特定问题或执行计算 In mathematics and computer science, an algorithm (/ˈlɡərɪəm/) is a finite sequence of rigorous instructions, …

IO多路转接之select

本文分享的是IO多路转接中的select,其中包括select函数如何去使用,以及使用相关代码实现客户端向服务端发送消息的服务,从而更好地理解多路转接的select。 多路转接 多路转接是IO模型的一种,这种IO模型通过select函数进行IO等待&…

AI浪潮再掀低代码开发热,快来了解最新趋势!

在近些年的发展中,人工智能 (AI) 已融入我们社会和生活的方方面面。从聊天机器人和虚拟助手到自动化工业机械和自动驾驶汽车,我们已经越来越离不开AI技术了,哪怕是我们的日常生活中也充满了它的影子,我们很难忽视它的影响。 AI时代…

小程序、网页跳转App的原理

从不同的渠道,如小程序、二维码、网页等,直接跳转到App内对应的页面,并传递相关的参数信息,已经由拥有深度链接技术的SDK实现了,App只需接入这类SDK即可获得多样化跳转的功能。本文将详细介绍多样化跳转的原理。 多样…

Unity | HDRP高清渲染管线学习笔记:基本操作

目录 一、场景整体环境光强度 1.HDRI Sky 2.Shadows 二、屏幕后处理效果(Post Processing) 1.Exposure 2.Post-processing/Tonemapping 三、抗锯齿 四、添加光源 1.Light Explorer窗口 2.光照探针组 3.反射探针 4.烘焙光照贴图 本文主要是了解HDRP基本操作&#xf…

高完整性系统:Hoare Logic

目录 1. 霍尔逻辑(Proving Programs Correct) 1.1 警告(Caveats) 1.2 误解(Misconception) 1.3 编程语言(Programming Language) 1.4 程序(Programs) 1…

Html源代码加密?

什么是Html源代码加密? 使用JavaScript加密转化技术将Html变为密文,以此保护html源代码,这便是Html源码加密。 同时,这种加密技术还可实现网页反调试、防复制、链接加密等功能。 应用场景 什么情况下需要Html源代码加密&#x…

clipboard复制粘题问题

clipboard复制粘贴问题 简单的clipboard用法引入clipboard使用方法 通过监听获取剪切板数据自定义获取clipboard剪切板值 记录下项目中使用clipboard复制粘题问题 简单的clipboard用法 引入clipboard npm install clipboard --save官网地址:传送门 使用方法 通过监听获取剪切…

基于neo4图数据库的简易对话系统

文章目录 一、环境二、思路第一步:输入问句第二步:针对问句进行分析,包括意图识别和实体识别第三步:问句转化第四步:问题回答的模板设计 三、代码解读1. 项目结构2. 数据说明3. 主文件kbqa_test.py解读4. entity_extra…

【第三方库】PHP实现创建PDF文件和编辑PDF文件

目录 引入Setasign/fpdf、Setasign/fpdi 解决写入中文时乱码问题 1.下载并放置中文语言包(他人封装):https://github.com/DCgithub21/cd_FPDF 2.编写并运行生成字体文件的程序文件(addFont.php) 中文字体举例&…

【数据结构】第七周

稀疏矩阵快速转置 【问题描述】 稀疏矩阵的存储不宜用二维数组存储每个元素,那样的话会浪费很多的存储空间。所以可以使用一个一维数组存储其中的非零元素。这个一维数组的元素类型是一个三元组,由非零元素在该稀疏矩阵中的位置(行号…

xxl-job的部署及springboot集成使用

介绍 XXL-Job是一个分布式任务调度平台,可进行任务调度、管理和监控,并提供任务分片、失败重试、动态分配等功能。它是一个开源项目,基于Spring Boot和Quartz开发,支持常见的任务调度场景。 XXL-Job的使用相对简单,只…