httprunner学习笔记(自用版)

目录

  • 一、安装
  • 二、脚本录制
    • 1、charles录制
    • 2、F12脚本录制
  • 三、脚本生成
    • 1、har转换为json脚本
    • 2、har转换为yml脚本
  • 四、执行脚本
  • 五、查看报告
  • 六、httpruner接口自动化项目架构

HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求

一、安装

前提条件:已安装python(自用的3.5)
dos命令行输入:pip install httprunner
验证安装成功:

C:\Users\Administrator>hrun -V
2.5.9

二、脚本录制

开源项目:
1、http://erp2.hzb-it.com/
2、https://github.com/macrozheng/mall
https://www.macrozheng.com/admin/index.html#/login

1、charles录制

打开charles,过滤掉其他域名
在这里插入图片描述

抓取场景: 登录—>组织—>职位管理—>新增职位为:初级测试工程师
在这里插入图片描述

回到charles,把js、css静态文件清除:选中-右键-clear(如果没有,就忽略)
在这里插入图片描述
把接口全选导出,保存文件类型为HTTP Archive(.har)
在这里插入图片描述

在这里插入图片描述

2、F12脚本录制

在这里插入图片描述
在这里插入图片描述

三、脚本生成

1、har转换为json脚本

将HAR转换为默认的JSON脚本,dos命令行输入:har2case 文件名.har(先切换到文件目录,在输入,文件我放到桌面了,执行后可以看到一个同名的json文件)
在这里插入图片描述

2、har转换为yml脚本

将HAR转换为YAML脚本,dos命令行输入:har2case -2y 文件名.har(执行后可以看到一个同名的yml文件)
在这里插入图片描述

生成的文件
在这里插入图片描述

四、执行脚本

注:由于录制脚本时,新增了岗位初级测试工程师,所以列表中删除后再去执行脚本,否则执行脚本后会提示职位已存在,又或者直接在录制的json文件中修改为其他名称都可以
在这里插入图片描述

dos命令行输入:hrun 文件名.json 或hrun 文件名.yml

在这里插入图片描述

五、查看报告

在这里插入图片描述
点击log,可以查看接口的请求和返回数据

在这里插入图片描述

六、httpruner接口自动化项目架构

创建项目命令:hrun --startproject 新项目名称

在这里插入图片描述
桌面会显示刚创建的testpro的文件夹
在这里插入图片描述
使用pycharm打开,目录结构如下

在这里插入图片描述

  • api:存放yml文件,接口定义
  • reports:存放测试报告
  • testcases:存放测试用例
  • testsuites:测试套件
  • .env:存放环境变量
    引用方式:在YAML/JSON脚本中,${ENV(变量名)}获取环境变量
  • .gitignore 当项目使用git做版本控制的时候,添加在此文件中的文件不会被git管理
  • debugtalk.py:项目中逻辑运算辅助函数
    ① 编写常见功能和业务相关的函数,使得测试用例中可以引用函数,实现一些动态的计算逻辑,如获取时间戳、生成随机数、处理签名等
    ② 编写hook函数,使得测试用例执行前后可以调用钩子函数,实现测试的准备和清理工作,如初始化某个请求参数、修改响应结果的某个值等
    引用方式:在 YAML/JSON 格式的测试用例中,通过${func()}的方式引用
    注:
    ① 文件存在时,其所在目录被视为项目工程根目录
    ② 该文件不存在时,运行测试的所在路径被视为项目工程根目录

1、编写接口描述(api)

模板样例demo_api.yml

name: demo api
variables:var1: value1var2: value2
request:url: /api/path/$var1method: POSTheaders:Content-Type: "application/json"json:key: $var2
validate:- eq: ["status_code", 200]

模板说明

  • name:接口名称
  • variables:变量信息,格式为key: value(注意冒号后面有一个空格)
  • request:请求信息
  • url:请求地址
  • method:请求方法
  • headers:请求头
  • json:请求参数 ,格式为key: value,value一般引用变量或函数,格式为:${var}、 ${value}
  • validate:结果断言

2、编写测试用例(testcases)
模板样例demo_testcase.yml

config:name: "demo testcase"variables:device_sn: "ABC"username: ${ENV(USERNAME)}password: ${ENV(PASSWORD)}base_url: "http://127.0.0.1:5000"teststeps:
-name: demo step 1api: path/to/api1.ymlvariables:user_agent: 'iOS/10.3'device_sn: $device_snextract:- token: content.tokenvalidate:- eq: ["status_code", 200]
-name: demo step 2api: path/to/api2.ymlvariables:token: $token

模板说明
config:整个测试用例的全局配置
name:测试用例名称,测试报告会显示该名称
variables:全局变量
base_url:访问地址,一般写域名host
teststeps:测试步骤,下面以列表形式编写一个或多个测试步骤,并且每一个测试步骤前面有‘-’
name:测试步骤名称,测试报告会显示该名称
api:引用接口描述文件,相对路径从根目录开始
variables:局部变量,优先于全局变量,若此处填写了局部变量,则会覆盖config中的variables全局变量
extract:从响应结果中提取参数,并保存到变量中,给其他测试步骤引用
validate:结果断言

打开上面生成的login.yml文件

config:name: testcase descriptionvariables: {}
teststeps:
-   name: /app/common/loginrequest:data:password: '123'username: adminheaders:Content-Type: application/x-www-form-urlencodedUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36method: POSTurl: http://erp2.hzb-it.com/app/common/loginvalidate:-   eq:- status_code- 200-   eq:- headers.Content-Type- application/json;charset=UTF-8-   eq:- content.msg- 提交成功-   eq:- content.errCode- 0

部分参考:https://blog.csdn.net/dad22211/article/details/133893006

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

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

相关文章

Request Response

1 前言 1.1 内容概要 理解Request、Response和HTTP报文之间的关系掌握通过Request能够获得的信息 请求URL、URI、请求协议请求头、客户机和主机请求参数 掌握通过Response能够完成的设置 响应中文乱码问题响应(Json)字符串、图片(文件&a…

Leetcode 188. 买卖股票的最佳时机 Ⅳ 状态机dp C++实现

Leetcode 188.买卖股票的最佳时机 Ⅳ 问题:给你一个整数数组 prices 和一个整数 k ,其中 prices[i] 是某支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。也就是说,你最多可以买 k 次&…

准备好了吗?JAVA从业AI开发的学习路线详解

作为一个拥有扎实 Java 基础的人,想要涉足人工智能(AI)应用开发,你已经在编程能力方面打下了很好的基础。Java 是一种通用的、强类型的语言,非常适合于开发高性能的应用程序,尤其是在后端服务和大规模分布式…

C++:IO流

目录 C语言的输入输出 流是什么 CIO流 C标准IO流 C文件IO流 stringstream的介绍 C语言的输入输出 C 语言中我们用到的最频繁的输入输出方式就是 scanf () 与 printf() 。 scanf(): 从标准输入设备 ( 键 盘 ) 读取数据,并将值存放在变量中 。 printf(): 将…

linux驱动之模块化编程

我们写的驱动程序,对linux操作系统而言,都是一个一个模块。 我们写应用程代码的时候是要有main函数入口,但是驱动模块有自己的入口。所以在编译驱动模块的时候就要使用到内核的makefile,来编译我们的模块。 我们在命令行敲&#x…

RS®FSWP 相位噪声分析仪和 VCO 测试仪信号源和组件的高端分析

FSWP 相位噪声分析仪和VCO测试仪 价格实惠,性能出众 R&SFSWP 相位噪声分析仪和 VCO 测试仪结合噪声极低的内部源与互相关技术,具备高灵敏度。它可在数秒内测量高度稳定的信号源的相位噪声。 R&SFSWP 还具备脉冲信号测量、加性相位噪声&…

C++初阶:string类的模拟实现

✨✨小新课堂开课了,欢迎欢迎~✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C:由浅入深篇 小新的主页:编程版小新-CSDN博客 前言: 前面已经对string类进行了…

[数据集][目标检测]井盖丢失未盖破损检测数据集VOC+YOLO格式2890张5类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2890 标注数量(xml文件个数):2890 标注数量(txt文件个数):2890 标注…

QGIS 如何连接空间库,并实时编辑空间表?编辑后库表如何刷新,保证是最新数据?

文章目录 一、什么是 qgis?二、qgis 如何连接数据库三、实时编辑空间表四、编辑后库表如何刷新,保证是最新数据?五、总结 一、什么是 qgis? QGIS(原称Quantum GIS)是一个用户界面友好的开源桌面端软件&…

htop、free -h对于可用内存显示不同的区别

htop中Mem包含了缓存和缓存区, free -h查看 used free buff/cache 上面htop显示的mem, 1、我看我还能用多少内存,看哪里 看free -h 中的free 2、buff/cache 是啥 缓存缓存区占用,htop显示的效果是把这个也算在一块了&#…

TIDB的整体架构和主要功能

1. 基础架构 PD :负责集群管理和调度。TiDB Server :负责 SQL 查询处理。TiKV/TiFlash:负责数据存储和事务处理。 1.1 PD (Placement Driver) Server 1.1.1 基础介绍 整个 TiDB 集群的元信息管理模块,负责存储每个 TiKV 节点实时…

哪款骨传导耳机适合运动?健身党无广安利五款有用的骨传导耳机!

作为一名耳机爱好者,我的耳机收藏可以说是丰富多样,从追求极致音质的头戴式,到便于携带的入耳式,再到近年来兴起的骨传导耳机,我都有所体验。在众多选择中,我最终偏爱上了骨传导耳机,它以其独特…

vue3 使用 codemirror 实现yaml文件的在线编辑

vue3 使用 codemirror 实现yaml文件的在线编辑 1. 使用情形2. 插件下载3. 封装yaml编辑器组件4. 父组件使用5. js-yaml 使用6. 备注 1. 使用情形 需要对yaml文件进行在线编辑,并且进行基础格式验证 2. 插件下载 vue-codemirror 在线代码编辑器插件 js-yaml 用于转…

容联云容犀Copilot&Agent入选《中国 AI Agent 产品罗盘》

近日,InfoQ研究中心推出《中国AI Agent应用研究报告》,并在报告中对现行的中国AI Agent产品进行梳理总结,并形成《中国AI Agent产品罗盘》。 作为“营销服”领域垂直类Agent,容联云容犀Copilot&Agent入选2024中国AI A…

java8+springboot2.3升级jdk17+springboot2.7.9踩坑

一.问题: java.lang.ExceptionInInitializerError: nullat java.base/java.lang.Class.forName0(Native Method)at java.base/java.lang.Class.forName(Class.java:375)。。。。。。内部保密。。。。at org.springframework.context.annotation.ParserStrategyUtils.invokeAwa…

封装智能指针 qt实现登录界面

1.封装独占智能指针——unique_ptr #include <iostream> #include <utility> // For std::move// 命名空间 namespace custom_memory { template <typename T> class myPtr { public:// 使用初始化列表进行初始化explicit myPtr(T* p nullptr) noexcept : …

ThinkPHP8出租屋管理系统

有需要请加文章底部Q哦 可远程调试 ThinkPHP8出租屋管理系统 一 介绍 此出租屋管理系统基于ThinkPHP8框架开发&#xff0c;数据库mysql&#xff0c;前端Vue3&#xff0c;前后端不分离&#xff0c;系统主要角色为管理员。房租计算器&#xff0c;房东记账收租管理&#xff0c;房…

NX二次开发—柱面中心线工具

设计一个柱面中心线工具,可以实现选择对象,画出圆柱的中心线,可以更改中心的线的颜色、线型、线宽和图层,是否延长,是否关联。 先在NX上进行界面设计 添加选择对象,并设置标题,选择设置为多选 添加组,在组里添加线条颜色/线型/线宽,设置颜色ColorValue和线型Value 这…

C++详解string(全面解析)

目录 string的概念&#xff1a; string的框架&#xff1a; 1、成员函数 2、迭代器&#xff08;Iterators&#xff09;​编辑 3、容量 4、元素访问 5、修改 6、非成员函数重载 string的构造和拷贝构造&#xff1a; string的析构&#xff1a; string的访问&#xff1a;…

单片机,传感器等低功耗管理

**有些客户需求&#xff0c;把设备做成低功耗管理&#xff0c;这样就可以节省电池的电量&#xff0c;也可以增加传感器的使用寿命 HCLK为CPU提供时钟&#xff0c;内核执行代码。当CPU不需要继续运行时&#xff0c;可以利用多种低功耗模式&#xff0c;等待某个事件触发 ① 睡眠…