测试工具:hurl

文章目录

  • Hurl
    • install
    • start
      • demo
    • 功能
      • 变量
      • Request
      • Response
        • Capturing values 捕获值
        • Asserts 断言
          • Implicit asserts 隐式断言
          • Explicit asserts 显式断言
        • Filerts 过滤器
      • CI/CD

Hurl

官网:https://hurl.dev/

Hurl 是一个命令行工具,它运行以简单的纯文本格式定义的 HTTP 请求。
它可以发送请求、捕获值并评估对标头和正文响应的查询

install

  • dowload
    https://github.com/Orange-OpenSource/hurl/releases
  • run
hurl --version

start

  1. 编写.hurl文件
  2. Running Tests
hurl [options] [FILE...]

demo

  1. 创建 basic.hurl文件
GET http://localhost:3000
  1. 执行 basic.hurl测试
hurl basic.hurl
# test mode
hurl --test basic.hurl

功能

变量

传入变量,在hurl文件中用{{ }} 使用变量

  1. --variable 选项
hurl --variable host=127.0.0.1 --variable id=1234 test.hurl
  1. --variables-file 选项
  • 编写 vars.env文件
host=127.0.0.1
id=1234
hurl --variables-file vars.env test.hurl
  1. HURL_name=value 环境变量
export HURL_host=example.net
export HURL_id=1234 
hurl test.hurl
  1. hurl文件中:[Options]
GET https://{{host}}/{{id}}/status
[Options]
variable: host=example.net
variable: id=1234
HTTP 304GET https://{{host}}/health
HTTP 200

Request

  • 基本格式
PUT https://sample.net
accept: */*
x-powered-by: Express
user-agent: Test
[QueryStringParams]
...查询字符串参数
[FormParams]
...表单参数
[BasicAuth]
...基本认证
[Cookies]
...Cookies
...
...
{"type": "FOO","value": 356789,"ordered": true,"index": 10
}
  • cookie
    同一 Hurl 文件中的请求共享 cookie 存储

Response

Capturing values 捕获值

从 HTTP 响应中提取可选值,并存储在命名变量

  • 语法
[Captures]
my_var: QueryType query
  • QueryType支持:
    status
    header
    url
    cookie
    body
    bytes
    xpath
    jsonpath
    regex
    variable
    duration
    certificate
  • demo
[Captures]
# 状态
my_status: status
# 标头
next_url: header "Location"
# url
landing_url: url
# cookie
session-id: cookie "LSID"
# body
my_body: body
# JSONPath
contact-id: jsonpath "$['id']"
Asserts 断言

允许在每个响应中插入断言

[Asserts]
Implicit asserts 隐式断言
  • Version - Status
    HTTP/1.0, HTTP/1.1, HTTP/2 or HTTP status code
  • Headers 标头
    name:value
GET https://example.org/404.html
HTTP 404
HTTP/1.1 404
HTTP/2 200Location: https://example.org/home
Set-Cookie: theme=light
Set-Cookie: sessionToken=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT
Explicit asserts 显式断言
  • 结构
    query predicateType predicateValue

  • query
    格式与Capturing相同

  • Predicates

==	
!=	
>
<
>=	
<=	
startsWith
endsWith
contains	  
includes	  
matches	    
exists	    
isBoolean	  
isCollection
isDate	    
isEmpty	    
isFloat	    
isInteger	  
isString	  
  • demo
[Asserts]
status < 300header "Location" contains "www.example.net"
header "Last-Modified" matches /\d{2} [a-z-A-Z]{3} \d{4}/url == "https://example.org/redirected"cookie "LSID" == "DQAAAKEaem_vYg"
cookie "LSID[Value]" == "DQAAAKEaem_vYg"
cookie "LSID[Expires]" exists
cookie "LSID[Expires]" contains "Wed, 13 Jan 2021"
cookie "LSID[Max-Age]" not exists
cookie "LSID[Domain]" not exists
cookie "LSID[Path]" == "/accounts"
cookie "LSID[Secure]" exists
cookie "LSID[HttpOnly]" exists
cookie "LSID[SameSite]" equals "Lax"header "Content-Type" == "text/html; charset=gb2312"
bytes contains hex,c4e3bac3cac0bde7; # 你好世界 encoded in GB 2312
body contains "你好世界"jsonpath "$.slideshow.author" == "Yours Truly"
jsonpath "$.slideshow.slides[0].title" contains "Wonder"
jsonpath "$.slideshow.slides" count == 2
jsonpath "$.slideshow.date" != null
jsonpath "$.slideshow.slides[*].title" includes "Mind Blowing!"variable "pets" count == 200duration < 1000   # Check that response time is less than one second
Filerts 过滤器

用于转换查询提取的值

count
daysAfterNow
daysBeforeNow
decode
format
htmlEscape
replace
split

CI/CD

  1. 集成脚本
    把hurl文件放在目录下
    编写sh脚本运行目录下的测试用例

  2. 集成到 git commit
    GitHub Action, GitLab CI/CD

  3. 生成报告

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

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

相关文章

软考 系统架构设计师系列知识点之净室软件工程(3)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之净室软件工程&#xff08;2&#xff09; 所属章节&#xff1a; 第5章. 软件工程基础知识 第5节. 净室软件工程 相关试题 1. 以下关于软件开发方法的叙述&#xff0c;错误的是&#xff08;&#xff09;。 A. 对于较为…

分享一个抖音视频解析神器~

怎么样下载抖音视频&#xff1f;相信很多人都有过这样的困惑。作为一个资深短视频剪辑工作者&#xff0c;常常需要用到各种视频素材&#xff0c;其中不乏需要从抖音上下载的&#xff0c;因此我也尝试过许多下载工具&#xff0c;但是效果都不大满意&#xff0c;直到有一次朋友给…

SpringBoot可以同时处理多少请求?

前言 前两天面试的时候&#xff0c;面试官问我&#xff1a;一个ip发请求过来&#xff0c;是一个ip对应一个线程吗&#xff1f;我突然愣住了&#xff0c;对于SpringBoot如何处理请求好像从来没仔细思考过&#xff0c;所以面试结束后就仔细研究了一番&#xff0c;现在就来探讨一…

C++——list

目录 list介绍 list的函数接口 构造函数 push_front和pop_front push_back和pop_back insert erase 迭代器 front和back size resize empty clear list::sort unique reverse 迭代器的实现 list介绍 list是一种可以在常数范围内在任意位置进行插入和删除的序列…

“AI换脸诈骗”来势汹汹,三个层面科学应对……

当前&#xff0c;AI技术的广泛应用为社会公众提供了个性化智能化的信息服务&#xff0c;也给网络诈骗带来可乘之机&#xff0c;如不法分子通过面部替换语音合成等方式制作虚假图像、音频、视频仿冒他人身份实施诈骗、侵害消费者合法权益。你认为AI诈骗到底应该如何防范&#xf…

Selenium3-获取元素的css属性

来个元素CSS值 代码1: 通过javaScript执行脚本获取css值 String jsStr "return document.getElementById(\"buyers\").style.getPropertyValue(width)"; Object o ((JavascriptExecutor) driver).executeScript(jsStr); System.out.println(o.toString(…

短视频平台Roposo入驻印尼,会成为下一个Tiktok吗

Roposo是一个印度本土的短视频平台&#xff0c;功能和风格都和Tiktok很相似。 早在2020年7月&#xff0c;印度下令封禁了多个app&#xff0c;其中就包括了TikTok。在那之前&#xff0c;TikTok已经在印度累计了约2亿的用户&#xff0c;基数已经非常的大&#xff0c;那么被封禁之…

北京君正X2600处理器亮相ELEXCON 2023,打造多核异构跨界新价值

伴随下游应用持续丰富&#xff0c;细节需求不断增多&#xff0c;标准化产品已越来越难以满足市场需求&#xff0c;芯片方案提供商需要不断深入行业&#xff0c;根据市场需求推出适配的产品。在这样的背景下&#xff0c;北京君正迅速推出X2600系列多核异构跨界处理器&#xff0c…

ONNX的结构与转换

ONNX的结构与转换 1. 背景2. ONNX结构分析与修改工具2.1. ONNX结构分析2.2. ONNX的兼容性问题2.3. 修改ONNX模型 3. 各大深度学习框架如何转换到ONNX&#xff1f;3.1. MXNet转换ONNX3.2. TensorFlow模型转ONNX3.3. PyTorch模型转ONNX3.4. PaddlePaddle模型转ONNX3.4.1. 简介3.4…

python冒泡排序算法

冒泡排序&#xff08;Bubble Sort&#xff09;&#xff0c;依次比较两个相邻的元素&#xff0c;如果顺序错误就把他们交换过来。直到没有相邻元素需要交换&#xff0c;也就是说该元素列已经排序完成。 操作步骤 1&#xff09;比较相邻的元素。如果第一个比第二个大&#xff0…

高阶数据结构学习——LRU Cache

文章目录 1、了解LRU Cache&#xff08;Least Recently Used缩写&#xff09;2、代码实现 1、了解LRU Cache&#xff08;Least Recently Used缩写&#xff09; Cache是缓存&#xff0c;在磁盘和内存之间&#xff0c;内存和寄存器之间都存在&#xff0c;CPU和内存之间存在三级缓…

基于PyTorch的中文情绪分析器设计与开发

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、相关基础理论2.1 主流深度学习框架2.2 神经网络2.2.1 神经网络基础 二、中文情感分类模型构建3.1 开发环境3.2 数据部分3.3 文本特征提取3.3.1、过滤标点符号3.3.2 中文分词、单词过滤 三 运行结果与分析五 结…

2,OpenCV函数解析

1&#xff0c;imread函数&#xff1a;图片读取 CV_EXPORTS_W Mat imread( const String& filename, int flags IMREAD_COLOR );//参数1(filename)&#xff1a;文件地址 //参数2(flags):读取标志注:ImreadModes&#xff0c;参数2(flags)枚举定义 enum ImreadModes {IMREA…

快速批量重命名:高效修改文件名并转换为大写扩展名

在文件管理中&#xff0c;批量重命名文件是一个常见的需求。通过快速批量重命名&#xff0c;我们可以高效地修改文件名并将扩展字母转换为大写形式。这样做不仅可以提高文件的可读性&#xff0c;还可以更好地组织和管理文件。用云炫文件管理器可以快速批量重命名&#xff0c;能…

k8s之pod进阶---资源限制与探针

目录 一、资源限制 二、探针&#xff08;健康检查&#xff09; 2.1 含义 2.2 探针的三种规则 2.3 probe支持三种检查方法 2.4 探针的示例 1、存活探针&#xff1a;livenessProbe &#xff08;1&#xff09;exec方式 &#xff08;2&#xff09;httpGet方式 &#xff08;…

如何使用ps制作ico图标文件

如何使用ps制作ico图标文件 Chapter1 如何使用ps制作ico图标文件Chapter2 ICOFormat.8bi&#xff08;Photoshop Ico、Cur插件&#xff09;的下载使用1. ICOFormat.8bi的作用2. ICOFormat.8bi使用 Chapter3 ps手机计算机图标教程,手绘设计精美手机APP软件图标的PS教程步骤 01 制…

目标检测中常见指标 - mAP

文章目录 1. 评价指标2. 计算示例3. COCO评价指标 1. 评价指标 在目标检测领域&#xff0c;比较常用的两个公开数据集&#xff1a;pascal voc和coco。 目标检测与图像分类明显差距是很大的&#xff0c;在图像分类中&#xff0c;我们通常是统计在验证集当中&#xff0c;分类正…

maven配置多仓库

配置多仓库不要用mirror&#xff0c;要用profile。 先将mirror全注释掉。 <?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-insta…

代码随想录图论并查集 第七天 | 685.冗余连接II

代码随想录图论并查集 第七天 | 685.冗余连接II 一、685.冗余连接II 题目链接&#xff1a;https://leetcode.cn/problems/redundant-connection-ii/ 思路&#xff1a;684.冗余连接中是连通且无环的无向图可直接使用并查集模板&#xff0c;如果想判断集合中是否有环&#xff0…

佳易王定制开发流水线商品标签自动打印软件,打印格式可定制

佳易王定制开发流水线商品标签自动打印软件&#xff0c;打印格式可以定制 软件特色&#xff1a; 定制试用商品标签打印管理V16.0&#xff0c;打印标签可以自动计算到期日期和品控日期&#xff0c;并打印品名、包装规格、生产日期、到期日期、储存条件、生产包装、品控日期等信…