首页 > 其他分享 >强!10.6K star,一款开源HTTP测试工具,适合新手,简单、容易上手!

强!10.6K star,一款开源HTTP测试工具,适合新手,简单、容易上手!

时间:2024-04-02 09:22:05浏览次数:29  
标签:HTTP 请求 10.6 Hurl https hurl 测试工具 star example

大家好,我是狂师!

今天给大家推荐一款开源的HTTP测试工具:Hurl,相比curlwget功能更强大,且更容易上手、很适用新手使用。

1、项目介绍

Hurl是一个使用Rust语言开发的命令行工具,它允许用户运行以简单纯文本格式定义的HTTP请求。这个工具不仅适用于获取数据,还非常适合用于测试HTTP会话和API。

项目地址:

https://github.com/Orange-OpenSource/hurl

Hurl的主要特性和用途包括但不限:

  • 请求发送与捕获:Hurl可以发送HTTP请求,并捕获响应中的值。这使得用户可以方便地执行各种HTTP操作,并收集所需的响应数据。
  • 查询与评估:Hurl支持对标头和正文响应进行查询和评估。用户可以使用XPath和JSONPath等多种查询方式,以满足不同的测试需求。
  • 链式调用:Hurl支持多个请求的链式调用,这使得用户可以方便地构建复杂的测试用例,从而更全面地测试HTTP会话或API。
  • 集成与报告:Hurl易于集成到CI/CD(持续集成/持续部署)流程中,支持生成多种格式的报告,如文本报告、JUnit报告和HTML报告,这有助于用户分析和理解测试结果。
  • 适用于多种场景:Hurl不仅适用于REST/JSON API的测试,还适用于HTML内容、GraphQL以及SOAP API等多种场景。

总的来说,Hurl是一个非常灵活且功能丰富的命令行工具,它不仅可以发送HTTP请求,还可以将这些请求链接在一起,形成请求链。这个特性使得Hurl在模拟复杂的用户交互场景时特别有用。此外,Hurl还能够捕获请求中的特定值,并对响应头部和响应正文中的信息进行查询和评估。
无论是对于初学者还是经验丰富的测试人员,Hurl都是一个值得考虑的选择。

2、不同平台安装下载

Hurl作为一个功能强大的命令行HTTP请求工具,其安装步骤在不同的操作系统上会有所不同。以下是针对各个平台的安装操作步骤:

  • Mac用户:可以通过Homebrew来安装Hurl。在终端中输入命令,按照提示完成安装过程。
brew install hurl
  • Windows用户:可以访问Hurl的GitHub发布页面,下载最新版本的安装包,然后按照提示进行安装。
https://github.com/Orange-OpenSource/hurl/releases

  • Linux用户:可以使用包管理器来安装Hurl。例如,在基于Debian的系统上,可以使用apt-get install hurl命令来安装。

3、Hurl使用

1、GET请求

# Get home:
GET https://example.org
HTTP 200
[Captures]
csrf_token: xpath "string(//meta[@name='_csrf_token']/@content)"


# Do login!
POST https://example.org/login?user=toto&password=1234
X-CSRF-TOKEN: {{csrf_token}}
HTTP 302

2、POST请求

POST https://example.org/api/tests
{
    "id": "4568",
    "evaluate": true
}
HTTP 200
[Asserts]
header "X-Frame-Options" == "SAMEORIGIN"
jsonpath "$.status" == "RUNNING"    # Check the status code
jsonpath "$.tests" count == 25      # Check the number of items
jsonpath "$.id" matches /\d{4}/     # Check the format of the id

Hurl虽是一个命令行工具,但Hurl的主要使用方式是通过编写Hurl文件,这些文件包含了要发送的HTTP请求的定义。然后,用户可以通过Hurl命令行工具来运行这些文件,发送请求并获取响应。

示例一:发送GET请求并输出响应

1、创建Hurl文件内容 (example1.hurl)

GET https://api.example.com/data

2、执行命令行

hurl example1.hurl

example1.hurl 是包含HTTP请求的Hurl文件。
执行此命令后,Hurl会发送一个GET请求到https://api.example.com/data,并在终端输出服务器的响应。

示例二:发送POST请求并携带JSON数据

1、创建Hurl文件内容 (example2.hurl)

POST https://api.example.com/create  
Content-Type: application/json  
  
{  
  "name": "John Doe",  
  "age": 30  
}

2、执行命令行

hurl example2.hurl

执行命令后,Hurl会发送POST请求到https://api.example.com/create,并在请求体中携带JSON数据。

示例三:使用变量和链式请求

1、创建Hurl文件内容 (example3.hurl)

GET https://api.example.com/user/123  
  
# 捕获响应中的token  
{{token}} = response.headers.get("X-Auth-Token")  
  
GET https://api.example.com/data  
Authorization: Bearer {{token}}

2、执行命令行

hurl example3.hurl

3、执行解释:

  • 第一个GET请求用于获取用户的认证token。
    {{token}} = response.headers.get("X-Auth-Token") 这行代码捕获响应头中的X-Auth-Token值,并将其存储在token变量中。
  • 第二个GET请求使用了前面捕获的token变量作为Authorization头的值,用于后续的认证。
  • 执行命令后,Hurl会按照顺序执行两个请求,并在第二个请求中使用第一个请求的响应数据。

示例四:包含断言和隐式验证

1、创建Hurl文件内容 (example4.hurl)

GET https://api.example.com/status  
  
# 隐式验证:检查状态码是否为200  
HTTP/1.1 200  
  
# 显式断言:检查响应体是否包含特定文本  
assert contains(response.body, "OK")

2、执行命令行:hurl example4.hurl

3、执行解释

  • 发送GET请求到https://api.example.com/status。
  • 隐式验证是通过在Hurl文件中直接指定期望的HTTP状态码(这里是200)来完成的。如果服务器的响应状态码与指定的不同,Hurl会报错。
  • 显式断言使用assert关键字来检查响应体是否包含"OK"文本。如果不包含,测试将失败。

这些示例展示了Hurl的基本用法和一些高级特性,如变量捕获、链式请求和断言验证。

你可以根据自己的需求,结合Hurl的文档和这些示例,构建更复杂的HTTP测试场景。

标签:HTTP,请求,10.6,Hurl,https,hurl,测试工具,star,example
From: https://www.cnblogs.com/jinjiangongzuoshi/p/18109848

相关文章

  • Python自动化测试工具-selenium
    官网https://www.selenium.dev/测试环境搭建python3+selenium+chromeselenium安装:pipinstallseleniumchromedriver下载对应版本,放置在python安装目录下:http://chromedriver.storage.googleapis.com/index.html#coding=utf8fromseleniumimportwebdriverbr=......
  • Camstar : IFrame菜单挂一个外部网站的页面
     如果设置变量传参: 这个是页面定义了两个固定变量:VP上的不同VP共用一个class。还有传递当前登录用户的: ......
  • Camstar半导体打印服务安装配置
    安装包配置如下: 保存后,启动服务。  ......
  • NewStarCTF-firstweek
    一、Crypto-brainfuck1.附件内容如下。++++++++[>>++>++++>++++++>++++++++>++++++++++>++++++++++++>++++++++++++++>++++++++++++++++>++++++++++++++++++>++++++++++++++++++++>++++++++++++++++++++++>++++++++++++++++++++++++>+++++......
  • mysql每天都重启动问题排查(mysqld_safe mysqld restarted)
    环境:OS:Centos7DB:mysql5.7 1.测试环境一台机器每天都要重启一次2024-03-31T20:08:10.130560Zmysqld_safemysqldrestarted2024-03-31T20:08:10.183119Z0[Warning]Changedlimits:max_open_files:5000(requested25000)2024-03-31T20:08:10.183338Z0[Warning]......
  • 【Pytest 01】 Get Started!
    文档集合DocumentationGetStarted入门How-toGuides使用指南ReferenceGuides参考指南Explanation解释GetStarted1-3BasicOperationInstallPytestCreateyourfirsttestRunmultipletests4.Assertthatacertainexceptionisraised#contentofte......
  • NewStarCTF(Reserve) WEEK1
    easy_RE咳有UPX壳,先脱壳enc="gmbh|D1ohsbuv2bu21ot1oQb332ohUifG2stuQ[HBMBYZ2fwf2~"flag=''foriinenc:b=(ord(i)-1)flag+=chr(b)print(flag)#flag{C0ngratu1at10ns0nPa221ngTheF1rstPZGALAXY1eve1}Segmentssegments用sh......
  • 【Java编程】【算法面试题】【数组合并】以数组 intervals 表示若干个区间的集合,其中
    原始题目:以数组intervals表示若干个区间的集合,其中单个区间为intervals[i]=[starti,endi]。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。......
  • NewStarCTF-thirdweek
    一、阳光开朗大男孩1.题目给出了secret.txt和flag.txt两个文件,secret.txt内容如下:法治自由公正爱国公正敬业法治和谐平等友善敬业法治富强公正民主法治和谐法治和谐法治法治公正友善敬业法治文明公正自由平等诚信平等公正敬业法治和谐平等友善敬业法治和谐和谐富强和谐富强和谐......
  • NewStarCTF-secondweek
    一、新建Word文档1.doc文档隐写,将如图所示的设置打开,即可看到文字。2.新佛曰加密,在线网站解密。(http://hi.pcmoe.net/buddha.html)二、永不消逝的电波1.附件是个音频,audacity打开,可以看到明显的长短波。2.莫斯密码解密即可。源报文:..-./.-../.-/--./-/...././-..././.../......