httprunner学习笔记(自用版)

news/2024/9/17 3:07:12/ 标签: 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.ppmy.cn/news/1522065.html

相关文章

spring 事物使用场景说明

事务使用场景。 在某些业务场景下,如果一个请求中,需要同时写入多张表的数据。为了保证操作的原子性(要么同时成功,要么同时失败),避免数据不一致的情况,我们一般都会用到spring事务。 确实&am…

C++ 设计模式——解释器模式

目录 C 设计模式——解释器模式1. 主要组成成分2. 逐步构建解释器模式步骤1: 定义抽象表达式步骤2: 实现终结符表达式步骤3: 实现非终结符表达式步骤4: 构建语法树步骤5: 实现内存管理步骤6: 创建上下文和客户端 3. 解释器模式 UML 图UML 图解析 4. 解释器模式的优点5. 解释器模…

ActiViz实战:使用Actor2D画一个二维网格

文章目录 一、效果预览二、交互三、C#源码示例一、效果预览 二、交互 1、能实现等比缩放 2、不允许平移和旋转 3、能够与三维坐标大小匹配 三、C#源码示例 private void AddCudeAxes2D() {double scale =

攻防世界 unseping

unseping 攻防世界web新手练习 -unseping_攻防世界web新手题unseping-CSDN博客 这道题对我来说还是有点难&#xff0c;什么oct绕过命令执行第一次遇到捏&#xff0c;所以基本是跟着别人的wp写的&#xff0c;一点点记录吧 先对源码进行分析 <?php highlight_file(__FILE…

【HarmonyOS NEXT】实现截图功能

【HarmonyOS NEXT】实现截图功能 【需求】 实现&#xff1a;实现点击截图按钮&#xff0c;实现对页面/组件的截图 【步骤】 编写页面UI Entry Component struct Screenshot {BuildergetSnapContent() {Column() {Image().width(100%).objectFit(ImageFit.Auto).borderRadi…

【鸿蒙南向开发】OpenHarmony自定义构建函数:@Builder装饰器

前面章节介绍了如何创建一个自定义组件。该自定义组件内部UI结构固定&#xff0c;仅与使用方进行数据传递。ArkUI还提供了一种更轻量的UI元素复用机制Builder&#xff0c;Builder所装饰的函数遵循build()函数语法规则&#xff0c;开发者可以将重复使用的UI元素抽象成一个方法&a…

项目7-音乐播放器7(测试报告)

1.项目背景 音乐播放器采用前后端分离的方法来实现&#xff0c;基于SSM框架构建&#xff0c;同时使用了数据库来存储相关的数据&#xff0c;同时将其部署到云服务器上。 用户可以轻松注册登录&#xff0c;浏览丰富的音乐库&#xff0c;搜索喜欢的歌曲。系统支持多种音频格式播…

【EI会议截稿通知】第九届计算机技术与机械电气工程国际学术论坛(ISCME 2024)

第九届计算机技术与机械电气工程国际学术论坛&#xff08;ISCME 2024&#xff09; 2024 9th International Seminar on Computer Technology, Mechanical and Electrical Engineering 会议信息 大会官网&#xff1a;www.is-cme.com 一轮截稿时间&#xff1a;2024年9月30日&a…

java把文字转MP3语音案例

一 工具下载&#xff1a; https://download.csdn.net/download/jinhuding/89723540 二代码 <dependency><groupId>com.hynnet</groupId><artifactId>jacob</artifactId><version>1.18</version> </dependency>import com.ja…

UEFI——使用标准C库

一、C标准库 C标准库是ANSL C标准为C语言定义的标准库。C标准库包含15个头文件&#xff1a;assert.h ctype.h error.h float.h limits.h locale.h math.h setjmp.h signal.h stdarg.h stddef.h stdio.h stdlib.h string.h time.h。标准库函数与C语言的紧密结合给我们开发程序带…

本地Docker部署Navidrome音乐服务器与远程访问听歌详细教程

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

springblade-JWT认证缺陷漏洞CVE-2021-44910

漏洞成因 SpringBlade前端通过webpack打包发布的&#xff0c;可以从其中找到app.js获取大量接口 然后直接访问接口&#xff1a;api/blade-log/api/list 直接搜索“请求未授权”&#xff0c;定位到认证文件&#xff1a;springblade/gateway/filter/AuthFilter.java 后面的代码…

力扣接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表…

15 用户管理

如果我们只能使用root用户&#xff0c;这样存在安全隐患。这时&#xff0c;就需要使用mysql的用户管理 张三只能操纵mytest这个库&#xff0c;李四只能操纵msg这个库&#xff0c;如果给他们root账户&#xff0c;就可以操纵所有库&#xff0c;风险太大 用户 用户信息 用户都存…

AI基础 L4 Uninformed Search I 无信息搜索

Problem-solving agent • Deterministic, fully observable ⇒ single-state problem Agent knows exactly which state it will be in; solution is a sequence • Non-observable ⇒ conformant problem Agent may have no idea where it is; solution (if any) is a sequen…

数据库系统 第40节 数据库安全策略

数据库安全策略是确保数据库系统安全、防止数据泄露和未授权访问的关键措施。以下是一些常见的数据库安全策略&#xff0c;以及它们在实际应用中的一些示例。 1. 访问控制 访问控制是数据库安全的基础&#xff0c;它确保只有授权用户才能访问数据库资源。这通常通过以下方式实…

【开源免费】基于SpringBoot+Vue.JS高校校园招聘服务系统(JAVA毕业设计)

本文项目编号 T 010 &#xff0c;文末自助获取源码 \color{red}{T010&#xff0c;文末自助获取源码} T010&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

利用Stable Diffusion AI图像模型评估智能车模型算法表现(下篇)

今天小李哥将介绍亚马逊云科技的Jupyter Notebook机器学习托管服务Amazon SageMaker上&#xff0c;通过AI图像生成模型Stable Diffusion Upscale和Depth、向量知识库和LangChain Agent&#xff0c;生成用于AI 智能车模型训练的图像数据集并评估模型表现。 本系列共分为上下两篇…

Math Reference Notes: 三角函数术语的几何学解释

在三角函数中&#xff0c;“正”、“余”、“弦”、"割"这些词汇源自古代的几何学术语&#xff0c;它们与三角形的边和角的关系密切相关。 1. 弦&#xff08;sin&#xff0c;cos的含义&#xff09;&#xff1a; “弦”字来源于圆中的“弦线”&#xff0c;即连接圆周…

VUE2.0 elementUI el-input-number 数据更新,视图不更新——基础积累

今天遇到一个问题&#xff0c;是关于el-input-number组件的&#xff0c;发现数据明明已经更改了&#xff0c;但是页面上组件输入框中还是之前的值。 比如上方输入框中&#xff0c;我输入120.5&#xff0c;就会出现下面的诡异现象 回显此值是120.779&#xff0c;但是页面上输入…