【五:Httprunner的介绍使用】

2023-10-21 00:36
文章标签 使用 介绍 httprunner

本文主要是介绍【五:Httprunner的介绍使用】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

接口自动化框架封装思想的建立。httprunner(热加载:动态参数),去应用 意义不大。

day1

一、什么是Httprunner?

1.httprunner是一个面向http协议的通用测试框架,目前最新的版本3.X。以前比较流行的 2.X的版本。
2.它的思想是只需要维护yaml/json/py文件就可以实现接口自动化测试,性能测试,线上 监控,持续集成。
3.架构图
image.png

二、httprunner的设计理念

1.充分复用开源项目,不追求重复的造轮子,而是将市面强大的轮子转成战车,降低框架的 开发成本以及学习成本。
2.遵循约定大于临时配置的准则。(合同,考勤)

3.配置文件组织测试用例。

三、httprunner环境安装

1.python环境:3.7.3
2.安装httprunner pip install httprunner
验证:hrun -V
image.png

3.必须知道的5个httprunner的命令
httprunner:主命令,用于所有功能
hrun:用于运行yaml/json/pytest测试用例。
hmake:用于将yaml/json测试用例转化成pytest文件。
har2case:用于将har文件转化成yaml/json/pytest测试用例。
locusts:用于性能测试

四、httprunner快速上手

1.使用抓包工具:fiddler、charles操作一遍抓包。导出har文件。
2.通过har2case命令把har文件转化成yaml/json/pytest文件格式。
har2case get_token.har 生成pytest文件格式的测试用例
har2case get_token.har -2y 生成yaml格式的测试用例
har2case get_token.har -2j 生成json格式的测试用例

运行:
hrun get_token.yml
hrun get_token.json
hrun get_token_test.py
发现运行完成之后py文件里面的断言自动的去掉了,说明不管是运行yml、json其实最终都 会重新成py文件运行。

五、YAML测试用例结构分析

每一个测试用例都是一个list of dict(字典列表)结构,其中包括config【配置】和 teststeps【步骤】
[{},{},{}]

cofig:配置
name:用例名称
variables:全局变量
verify:是否开启https验证

teststeps:步骤
name: /cgi-bin/token 步骤名称
request: 请求
headers: 请求头
Accept: ‘/
Accept-Encoding: gzip, deflate, br
Cache-Control: no-cache
Connection: keep-alive
Host: api.weixin.qq.com
Postman-Token: 50f8bb1a-7826-49f8-835e-ec889063b7cc
User-Agent: PostmanRuntime/7.28.0

method: GET 请求方式
params: 请求参数
appid: wx74a8627810cfa308
grant_type: client_credential
secret: e40a02f9d79a8097df497e6aaf93ab80
url: https://api.weixin.qq.com/cgi-bin/token 请求路径
validate:断言
- eq:
- status_code
- 200
- eq:
- headers.Content-Type
- application/json; encoding=utf-8

六、接口关联

在request标签下加一个extract标签提取返回值,通过content或body提取

extract:
aaa: content.access_token
然后通过$变量名使用
params:
access_token: $aaa

七、动态参数:通过debugtalk.py的热加载的方式实现。

第一步:创建一个debugtalk.py文件,然后再里面写一个函数。
第二步:在yaml文件中通过${函数名()}的方式调用。

八、环境变量

开发环境,测试环境,线上环境。预发布环境。 在config下加入:
base_url: https://api.weixin.qq.com

九、全局变量和局部变量

config下的variables是全局变量
teststeps:下的variables是局部变量
image.png
- name: /cgi-bin/tags/update

有两种写法:
1.换行的键值对 ,上面展示的是键值对的展示
2.{}的方式

十、生成HTML格式的报告

要在目录下运行
hrun httprunneres --html=httprunneres/report.html

就是pytest里面pytest-html插件的报告一模一样。

day2

十一、httprunner常规的关键字详解

httprunner测试用例的结构
config:配置
name:名称
variables:全局变量
verify:https协议
base_url:环境变量
teststeps:步骤
name:步骤名称
request:请求
headers:请求头
method:请求方式
params:参数
url:请求路径
cookie:cookie信息
json:用于发送http请求正文
data:用于发送http请求正文
extract:提取(通过content或body提取,json提取器。支持正则表达式提取。)
validate:断言
eq相等
equals相等 str_eq(str(a)=str(b))
lt:小于
le:小于或等于
gt:大于
ge:大于或等于
contains:包含

简化:
name:接口名称
request:请求
headers:请求头
method:请求方式
data:参数
url:请求路径
cookie:cookie信息
extract:提取(通过content或body提取,json提取器。支持正则表达式提取。)
validate:断言
equals相等
str_eq(str(a)=str(b))
contains:包含

十二、httpruner接口自动化项目架构

生成httprunner框架:
先要切换到项目的根目录,使用:httprunner startproject 项目名(没有虚拟环境)

har:存放har文件
reports:存在报告

testcases:存放测试用例
api:存放yml文件,接口定义。
data:数据驱动
testsuites:测试套件
.env:存放环境变量
.gitignore 当你的项目使用git做版本控制的时候,添加在此文件中的文件不会被git管理。
debugtalk,py实现热加载。

分层架构:三层
1.接口定义层(api):为了更好的管理接口描述,每个一个接口定义都应该尽量的能够单 独运行。
2.测试用例层(testcases)
3.测试套件层(testsuites)
关系:testcases调用api层(使用api关键字),testsuites调用testcases层。(使用 testcase关键字)

十三、环境变量

环境变量可以写入.env文件。
然后在api接口定义层里面使用:${ENV(变量名)}获取环境变量。
httprunner实际的工作应用其他不多,只有一小部分的公司用它做接口自动化,主要目 的:思想。

每个项目的接口不一样。
每个公司的框架都是不一样的。

day3

appid,grant_type,secret,assert_str
"wx74a8627810cfa308","client_credential","e40a02f9d79a8097df497e6aaf93ab80","access_token"
"","client_credential","e40a02f9d79a8097df497e6aaf93ab80","access_token"
"wx74a8627810cfa308","","e40a02f9d79a8097df497e6aaf93ab80","access_token"

今日内容:接口自动化框架封装思想建立之httprunner框架(下).pdf

这篇关于【五:Httprunner的介绍使用】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/250741

相关文章

Java中的Cursor使用详解

《Java中的Cursor使用详解》本文介绍了Java中的Cursor接口及其在大数据集处理中的优势,包括逐行读取、分页处理、流控制、动态改变查询、并发控制和减少网络流量等,感兴趣的朋友一起看看吧... 最近看代码,有一段代码涉及到Cursor,感觉写法挺有意思的。注意是Cursor,而不是Consumer

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

如何使用CSS3实现波浪式图片墙

《如何使用CSS3实现波浪式图片墙》:本文主要介绍了如何使用CSS3的transform属性和动画技巧实现波浪式图片墙,通过设置图片的垂直偏移量,并使用动画使其周期性地改变位置,可以创建出动态且具有波浪效果的图片墙,同时,还强调了响应式设计的重要性,以确保图片墙在不同设备上都能良好显示,详细内容请阅读本文,希望能对你有所帮助...

Rust中的注释使用解读

《Rust中的注释使用解读》本文介绍了Rust中的行注释、块注释和文档注释的使用方法,通过示例展示了如何在实际代码中应用这些注释,以提高代码的可读性和可维护性... 目录Rust 中的注释使用指南1. 行注释示例:行注释2. 块注释示例:块注释3. 文档注释示例:文档注释4. 综合示例总结Rust 中的注释

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

springboot的调度服务与异步服务使用详解

《springboot的调度服务与异步服务使用详解》本文主要介绍了Java的ScheduledExecutorService接口和SpringBoot中如何使用调度线程池,包括核心参数、创建方式、自定... 目录1.调度服务1.1.JDK之ScheduledExecutorService1.2.spring

Java使用Tesseract-OCR实战教程

《Java使用Tesseract-OCR实战教程》本文介绍了如何在Java中使用Tesseract-OCR进行文本提取,包括Tesseract-OCR的安装、中文训练库的配置、依赖库的引入以及具体的代... 目录Java使用Tesseract-OCRTesseract-OCR安装配置中文训练库引入依赖代码实

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台