【五: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

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

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

相关文章

开源的容器运行时项目 Podman

本心、输入输出、结果 文章目录 开源的容器运行时项目 Podman前言Podman 简介Podman 与 Docker 的区别Podman 在使用上和 Docker 有什么区别从构建者角度分析 Podman 在使用上和 Docker 有什么区别从使用者角度分析 Podman 在使用上和 Docker 有什么区别 Podman 常用命令容器镜…

maven 常用知识速记

创建项目 maven archetype:generate依赖范围 有如下依赖示例&#xff1a; <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.7</version><scope>test</scope> </dependency>其中…

18.项目开发之前端项目搭建测试

项目开发之前端项目搭建测试 解压文件&#xff0c;将前端项目目录&#xff0c;拖拽到HBuilder中 前端项目QuantTrade_vue地址&#xff1a;传送门 后端项目QuantTrade地址&#xff1a; https://pan.baidu.com/s/1GF45B0QepApH8JbRIOLY7w?pwd1016 开启idea的项目&#xff0c;先…

一个适合练手的接口测试实战项目——慕慕生鲜

前言 最近很多粉丝找小月要接口测试项目练练手&#xff0c;看看实力&#xff01;今天&#xff0c;它来了 慕慕生鲜&#xff0c;完整版&#xff0c;文末有福利&#xff01; 干货来咯&#xff0c;收藏好&#xff01; 1. 接口测试需求分析 常见接口文档提供的两种方式 ①wor…

四川竹哲电商:抖店怎么修改经营类目?

抖店是抖音推出的一款电商工具&#xff0c;通过抖店可以帮助商家在抖音上开展经营活动。在抖店平台上&#xff0c;商家需要选择经营类目&#xff0c;以便在相应的领域展示商品和提供服务。然而&#xff0c;有时候商家可能需要修改经营类目&#xff0c;以适应经营策略调整或扩大…

Linux进程(三)--进程切换命令行参数

继上回书Linux进程概念&#xff08;二&#xff09;--进程状态&进程优先级&#xff0c;我们在了解了Linux进程状态和优先级的概念&#xff0c;初步掌握了进程状态的相关知识&#xff0c;最终&#xff0c;我们以Linux进程的优先级&#xff0c;引出了一些其他的概念&#xff1…

Python---循环---while循环

Python中的循环 包括 while循环与for循环&#xff0c;本文以while循环为主。 Python中所有的知识点&#xff0c;都是为了解决某个问题诞生的&#xff0c;就好比中文的汉字&#xff0c;每个汉字都是为了解决某种意思表达而诞生的。 1、什么是循环 现实生活中&#xff0c;也有…

(N-128)基于springboot,vue酒店管理系统

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 系统分前后台&#xff0c;项目采用前后端分离 前端技术&#xff1a;vueelementUI 服务端技术&#xff1a;springbootmybatis 本系统功…

vueday02——使用NTableData

1.下载naivueui 2.按需导入&#xff0c;不要全局导入 注意不要导入错误组件或者写错组件名称 import { NDataTable } from naive-ui 3.定义表头和数据&#xff01;&#xff01;&#xff01; n-data-table标签必须要使用数据和数据 少一个都不能正确渲染&#xff01;&#xf…

ATA-M4功率放大器都有哪些具体特点及优势

我们的ATA-M系列功率放大器&#xff0c;旨在将它打造为超越ATA-L系列水声功率放大器高频限制的系列产品。其中ATA-M4功率放大器是一款理想的单通道功率放大器。最大输出345Vrms电压&#xff0c;400VA功率&#xff0c;可驱动0~100%的阻性或非阻性负载。输出阻抗匹配多个档位可选…

GCC优化相关

文章目录 优化选项博文链接 单独设置某段代码优化等级博文链接 优化选项 -O/-O0:无优化(默认)-O1:使用能减少目标文件大小以及执行时间并且不会使编译时间明显增加的优化。该模式在编译大型程序的时候会花费更多的时间和内存。在-O1 下&#xff0c;编译会尝试减少代码体积和代码…

内核初始化的过程

内核的启动从入口函数 start_kernel() 开始。在 init/main.c 文件中&#xff0c;start_kernel 相当于内核的 main 函数。打开这个函数&#xff0c;你会发现&#xff0c;里面是各种各样初始化函数 XXXX_init。 在操作系统里面&#xff0c;先要有个创始进程&#xff0c;有一行指令…

JAVA发送消息到RabbitMq

项目中&#xff0c;作为生产者自定义消息发送到RabbitMq。 1.引入rmq依赖 <!-- rabbitmq 依赖 --><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.9.0</version></dependen…

SystemVerilog Assertions应用指南 Chapter1.31 在属性中使用形参

可以用定义形参( formal arguments)的方式来重用一些常用的属性。属性“arb”使用了4个形参,并且根据这些形参进行检验。其中还定义了特定的时钟。SVA允许使用属性的形参来定义时钟。这样,属性可以应用在使用不同时钟的相似设计模块中。同样的,时序延迟也可以参数化,这使得属性…

cocos creator 在网页中调试的时候直接代码调试方法

cocos creator 在网页中调试的时候直接代码调试方法

Milvus 介绍

Milvus 介绍 Milvus 矢量数据库是什么&#xff1f;关键概念非结构化数据嵌入向量向量相似度搜索 为什么是 Milvus?支持哪些索引和指标&#xff1f;索引类型相似度指标(Similarity metrics) 应用示例Milvus 是如何设计的&#xff1f;开发者工具API访问Milvus 生态系统工具 本页…

算法专题:双指针

目录 题目1&#xff1a;移动零 题目2&#xff1a;复写零 题目3&#xff1a;快乐数 题目4&#xff1a;最多水的容器 题目5&#xff1a;有效三角形的个数 题目6&#xff1a;两数之和为s 题目1&#xff1a;移动零 给定一个数组nums&#xff0c;编写一个函数将所有的0移动到数…

VueRouter 源码解析

重要函数思维导图 路由注册 在开始之前&#xff0c;推荐大家 clone 一份源码对照着看。因为篇幅较长&#xff0c;函数间的跳转也很多。 使用路由之前&#xff0c;需要调用 Vue.use(VueRouter)&#xff0c;这是因为让插件可以使用 Vue export function initUse(Vue: GlobalAP…

Vue2使用定时器和闭包实现防抖和节流函数。将函数放入util.js中,供具体功能在methods中调用

Vue2使用定时器和闭包实现防抖和节流函数。将函数放入util.js中&#xff0c;供具体功能在methods中调用。<br/ 参考文档&#xff1a; 如何在Vue中优雅的使用防抖节流人类高质量JS防抖与节流机制Vue项目中使用防抖和节流vue2使用lodash中的防抖&#xff08;debounce&#xff…

Android端自定义铃声

随着移动应用竞争进入红海时代&#xff0c;如何在APP推送中别出心裁显得尤为重要。例如对自己的APP推送赋予独特的推送铃声&#xff0c;能够给用户更加理想的使用体验。 1、个性化提醒铃声有助于当收到特定类型的消息时&#xff0c;用户能够立刻识别出来。 2、不同的推送铃声…