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.hqwc.cn/news/60326.html

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

相关文章

uniapp实现自定义导航内容高度居中(兼容APP端以及小程序端与胶囊对齐)

①效果图如下 1.小程序端与胶囊对齐 2.APP端内容区域居中 注意:上面使用的是colorui里面的自定义导航样式。 ②思路: 1.APP端和小程序端走不同的方法,因为小程序端要计算不同屏幕下右侧胶囊的高度。 2.其次最重要的要清晰App端和小程序端…

这50幅画让你看清世界真相,犀利深刻,值得一读!

让你看清这个世界的真相! 01 自弃者扶不起 自强者打不倒 02 人人都活在假象里 03 宁可有病再治,也不愿意未雨绸缪 04 一个人成熟的表现 是具备了太极思维 05 最大的监狱是人的思维监狱 06 认知太浅,放弃学习 这就是焦虑和绝望的根本原因 0…

GPT-4助力数据分析:提升效率与洞察力的未来关键技术 | 京东云技术团队

摘要 随着大数据时代的到来,数据分析已经成为企业和组织的核心竞争力。然而,传统的数据分析方法往往无法满足日益增长的数据分析需求的数量和复杂性。在这种背景下,ChatGPT-4作为一种先进的自然语言处理技术,为数据分析带来了革命…

DevExpress WinForms Gantt组件——轻松可视化项目时间表内的时间轴

DevExpress WinForms的Gantt组件在v23.1中附带了一个新的时间轴UI元素,Gantt(甘特图)控件本身允许您计划/管理项目,而时间轴显示单个任务的开始和截止日期,并提供项目进度的鸟瞰图。 DevExpress WinForms 拥有180组件和…

如何使用Audition生成固定频率的正弦波

一,简介 本文主要介绍如何使用Audition软件生成固定频率的正弦波进行相关测试验证工作。 二,准备工作 需要安装Audition软件,本次使用的是Adobe Audition CC 2018绿色版。其他版本也都可以,只是步骤上可能有细微的差别。 三&…

GDB 打印uint64位数据值

今天一来组长就让我查一个问题,说是我们的接口返回的数据需要赋值为-1,返回给上层调用。结果我一看代码,代码里就是写死了赋值 -1 的,但他说实际返回的好像不是 -1,所以只能让我gdb 跟踪一下了。本来想用 window 下的计…

享元模式 Flyweight Pattern 《游戏编程模式》学习笔记

如果我们要存储一个树一样的数据结构,直觉来说我们会这么写 但是实际上我们会发现,哪怕森林里有千千万万的树,它们大多数长得一模一样。 它们使用了相同的网格和纹理。 这意味着这些树的实例的大部分字段是一样的。 那么我们就可以将树共…

适配器模式来啦

网上的大多数的资料中适配器模式和代理模式都是紧挨着进行介绍的,为什么呢??? 是因为适配器模式和代理模式有太多的相似之处,可以进行联动记忆但是也要做好区分。 在菜鸟教程中,适配器模式的定义是作为两…

linux环形缓冲区kfifo实践1

本次实验使用的kfifo相关宏 struct __kfifo {unsigned int in;unsigned int out;unsigned int mask;unsigned int esize;void *data;}; /** define compatibility "struct kfifo" for dynamic allocated fifos*/ struct kfifo __STRUCT_KFIFO_PTR(unsigned char, …

安全杂记 - 复现nodejs沙箱绕过

目录 一. 配置环境1.下载nodejs2.nodejs配置3.报错解决方法 二. nodej沙箱绕过1. vm模块2.使用this或引用类型来进行沙箱绕过 一. 配置环境 1.下载nodejs 官网:https://nodejs.org/en2.nodejs配置 安装nodejs的msi文件,默认配置一直下一步即可&#x…

适配器模式-java实现

意图 复用已经存在的接口,与所需接口不一致的类。即将一个类(通常是旧系统中的功能类),通过适配器转化成另一个接口的实现。(简单来说,就是复用旧系统的功能,去实现新的接口) 我们举…

JAVA电商平台免费搭建 B2B2C商城系统 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城 bbc

​ 1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前…