HttpRunner搭建接口自动化测试项目

前言:前面写过一篇Pytest+Allure接口自动化测试框架搭建的博客,这篇博客学习另外一款优秀的开源的接口自动化测试框架:HttpRunner,本博客主要学习如何搭建基于HttpRunner的接口自动化测试项目

Pytest+Allure接口自动化测试框架搭建博客地址

(Python)Requests+Pytest+Allure接口自动化测试框架从0到1搭建_MRJJ_9的博客-CSDN博客

gitee仓库地址:

https://gitee.com/MRJJ_9/httprunner_project

目录

环境搭建

配置JSON文件

用例参数化

_test.py文件 

查看报告

项目结构 


环境搭建

安装httprunner

pip install httprunner

安装后查看常用命令

下载hrp,创建项目hrp

startproject httprunner_project

项目创建可参考下面的文章

httprunner 4.x学习 - 1 .环境准备与快速开始 - 上海-悠悠 - 博客园 (cnblogs.com)

配置JSON文件

JSON转YAML,YAML转JSON - 在线工具 - OKTools

JSON文件配置

配置url,url写到了配置文件env里,url=http://localhost:8080

参数传递,用$+变量名

填入请求方法,请求体

{"config": {"name": "验证登录接口","base_url": "${ENV(url)}","parameters": {"username": ["18999999999","","18999999999",""],"password": ["","ABCabc012!@#","ABCabc012!@#",""]},"verify": false},"teststeps": [{"name": "登录","request": {"method": "POST","url": "/test/login","headers": {},"body": "username=$username&password=$password"},"validate": [{"eq": ["status_code",200]},{"eq": ["body.code",-1]}]}]
}

用例参数化

可以使用以下格式实现用例的参数化

这种方式参数以笛卡尔积产生的组合进行传递,即产生测试用例4*4=16条

"parameters": {"username": ["18999999999","","18999999999",""],"password": ["","ABCabc012!@#","ABCabc012!@#",""]}

下面的这种格式,对应的测试用例有四条,键使用参数1-参数2的方式,里面的值是每条用例对应的传参,例如第一条用例的username对应18999999999,密码为空

"parameters": {"username-password": [["18999999999",""],["","ABCabc012!@#"],["18999999999","ABCabc012!@#"],["",""]]}

_test.py文件 

自动生成的_test.py文件,里面的内容与用pytest框架写测试用例大致一样,@pytest.mark.parametrize实现参数化,发送Request请求,传递参数,进行断言,只不过HttpRunner进行了二次封装

# NOTE: Generated By HttpRunner v4.3.5
# FROM: .\testcases\login2.json
import pytest
from httprunner import HttpRunner, Config, Step, RunRequest
from httprunner import Parameters
class TestCaseLogin2(HttpRunner):@pytest.mark.parametrize("param",Parameters({"username-password": [["18999999999", ""],["", "ABCabc012!@#"],["18999999999", "ABCabc012!@#"],["", ""],]}),)def test_start(self, param):super().test_start(param)config = Config("验证登录接口").base_url("${ENV(url)}").verify(False)teststeps = [Step(RunRequest("登录").post("/test/login").with_headers(**{}).with_data("username=$username&password=$password").validate().assert_equal("status_code", 200).assert_equal("body.code", -1)),]if __name__ == "__main__":TestCaseLogin2().test_start()

查看报告

项目结构 

testcases:存放生成的测试用例,需要先配置好json文件,再用命令行自动生成对应的_test.py文件,hrun login1.json,进入testcases文件夹后,将指定json文件生成_test.py文件,或者在工程目录下,执行:hrun testcases,会自动将testcases下的所有.json文件自动生成对应的_test.py文件

配置完成并生成_test.py文件后,就可以用pytest命令运行:pytest testcases --html=reports/result.html,输出在testcases下所有_test.py文件执行用例结果得到的最终测试报告

reports:存放生成的测试报告

.env:用于存放配置文件

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

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

相关文章

【刷题笔记8.9】LeetCode题目:两数相加

LeetCode题目2:两数相加 题目及描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设…

Linux 常用操作命令

Linux简介及Ubuntu安装 Linux,免费开源,多用户多任务系统。基于Linux有多个版本的衍生。RedHat、Ubuntu、Debian 安装VMware或VirtualBox虚拟机。具体安装步骤,找百度。 再安装Ubuntu。具体安装步骤,找百度。 常用指令 ls  …

国际货币汇率 API 数据接口

国际货币汇率 API 数据接口 支持多种货币对,每日精准汇率,多币种支持。 1. 产品功能 支持多种货币汇率查询;支持部分加密货币汇率查询;数据为每日更新汇率数据;可一次查询源货币代码对应所有目标货币汇率&#xff1b…

LinuxC编程——进程

目录 一、概念1.1 程序1.2 进程 二、特点⭐⭐⭐三、进程段四、进程分类五、进程状态六、进程状态转换图七、函数接口1. 创建子进程2. 回收进程资源3. 退出进程4. 获取进程号 八、守护进程 一、概念 进程和程序是密不可分的两组概念,相对比,便于理解。 1.…

2023年,App运行小游戏,可以玩出什么创意?

疫情过后,一地鸡毛。游戏行业的日子也不好过。来看看移动游戏收入:2022年,移动游戏收入达到920亿美元,同比下降6.4%。这告诉我们,2022年对移动游戏市场来说是一个小挫折。 但不管是下挫还是上升,移动游戏市…

你见过的这里都有,开源Web性能测试工具集合

你见过的这里都有,开源Web性能测试工具集合: 1、JMeter。这个也不用多介绍,基本属于做过Web性能测试都会接触的工具。Apache旗下的开源项目,属于一个Java桌面应用程序。优势是开源免费,扩展能力强。自身性能是硬伤。 …

数据库活动监控(DAM)

在当今数据驱动的世界中,组织在保护存储在数据库中的机密数据并确保其完整性方面面临着越来越多的挑战。数据库审计通过提供全面的数据库活动监控方法,在应对这些挑战方面发挥着至关重要的作用。 数据库活动监控(Database Activity Monitori…

AI语音工牌在通讯行业营业大厅场景应用

在运营商营业大厅中,每天都有大量的客户来访咨询、办理业务。同时也会经常产生大量的客诉纠纷和服务差评。但因为缺乏有效的管理工具,加上线下沟通场景的数据采集难度高,数字化程度低,管理一直处于盲区。如何有效的管控营业厅人员…

【Spring专题】Spring之Bean的生命周期源码解析——上(扫描生成BeanDefinition)

目录 前言阅读指引阅读建议 课程内容一、生成BeanDefinition1.1 简单回顾1.2 概念回顾1.3 核心方法讲解 二、方法讲解2.1 ClassPathBeanDefinitionScanner#scan2.2 ClassPathBeanDefinitionScanner#doScan2.3 ClassPathScanningCandidateComponentProvider#findCandidateCompon…

面试热题(环形链表II)

给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引…

STM32CubeMX+VSCODE+EIDE+RT-THREAD 工程创建

Eide环境搭建暂且不表,后续补充。主要记录下Vscode环境下 创建Rt-thread工程的过程。分别介绍STM32CubeMX添加rtt支持包的方式和手动添加rtt kernel方式。STM32CubeMX生成工程的时候有"坑",防止下次忘记,方便渡一下有缘人&#xff…

MyCat配置rule.xml、server.xml讲解

1. rule.xml分片规则配置文件 rule.xml中配置的主要就是拆分表的规则,rule.xml中主要包含两类标签 tableRule 和Function。 tableRule标签里面主要配置我们的分片规则,Function里面涉及的是分片规则里面所涉及的java类,都是在function中配置…

OI易问卷协助企业服务好员工,收集员工反馈与信息

OI易问卷——企业问卷调查工具 OI易问卷,是群硕专为企业打造,对内服务员工的调查问卷。 集成于办公联合创新平台,并进一步帮助客户实现与微信或企业微信等其他平台的对接。 可以有效促进员工服务数字化,提高各部门工作效率&…

中介者模式(C++)

定义 用一个中介对象来封装(封装变化)一系列的对象交互。中介者使各对象不需要显式的相互引用(编译时依赖->运行时依赖),从而使其耦合松散(管理变化),而且可以独立地改变它们之间的交互。 应用场景 在软件构建过程中,经常会出现多个对象…

C#实现三菱FX-3U SerialOverTcp

设备信息 测试结果 D值测试 Y值写入后读取测试 协议解析 三菱FX 3U系列PLC的通信协议 1. 每次给PLC发送指令后,必须等待PLC的应答完成才能发送下一条指令; 2. 报文都是十六进制ASCII码的形式 3. 相关指令 指令 命令码(ASCII码) 操作原件 …

Selenium的xpath高级写法-实用篇

系列文章目录 提示:阅读本章之前,请先阅读目录 文章目录 系列文章目录前言获取父级获取前一个兄弟级获取后一个兄弟级获取内容包含某些内容获取内容是空消除不可见的内容 前言 获取父级 //div[text()‘我是子级’]/parent::div[text()‘我是父级’] 获取…

06 - Stream如何提高遍历集合效率?

前面我们讲过 List 集合类,那我想你一定也知道集合的顶端接口 Collection。 在 Java8 中,Collection 新增了两个流方法,分别是 Stream() 和 parallelStream()。 1、什么是 Stream? 现在很多大数据量系统中都存在分表分库的情况…

vue3部署宝塔后请求接口404以及刷新页面404的问题解决方案

技术:vue3.2.13 UI框架:element-plus 2.1.1 服务器:腾讯云Centos系统宝塔面板 Nginx:1.22.1 前提:宝塔面板》网站PHP项目 已经新建了项目 1.处理vue页面刷新报错404 如上图,在PHP网站》设置》配置文件,新增如下代码…

springboot 多模块 每个模块进行单独打包

springboot项目目录结构 打包模块需要进行的配置 配置文件引入打包插件 <build><finalName>api</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifac…

css3 实现文字横幅无缝滚动

css3 实现文字横幅无缝滚动 使用 css3 关键帧 keyframes 和 animation 属性实现文字横幅无缝滚动。 <template><div class"skiHallBanner"><div class"skiHallBanner-text"><span>{{ text }}</span></div></div>…