前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTPRunner

HTTPRunner

作者头像
顾翔
发布2024-09-10 15:18:59
1160
发布2024-09-10 15:18:59
举报
文章被收录于专栏:啄木鸟软件测试

HTTPRunner是一种单元测试工具,由于教学的需求,我学习了它,但是我觉得它比Python的Requests类相差太远。作为一个比较流行的工具在这里进行介绍。

1,原理

HttpRunner 是一款开源的 API 测试工具,兼容 HTTP(S)、HTTP2、WebSocket、RPC 等多种网络协议,支持接口测试、性能测试、数字体验监测等多种测试类型。它操作简便,功能全面,拥有丰富的插件系统和卓越的扩展性。

功能特点:

  1. 全面支持网络协议:不仅完整支持 HTTP(S)/1.1 和 HTTP/2,还能灵活扩展至 WebSocket、TCP、RPC 等多种协议。
  2. 多样化的测试用例格式:支持 YAML、JSON、go test、pytest 等多种格式,且可轻松实现格式之间的转换。
  3. 双重执行引擎:集成了 golang 和 python 两种执行引擎,既保证了go 的高效性能,也享受了 pytest 丰富的生态系统。
  4. 便捷的用例生成方式:支持通过 HAR、Postman、Swagger、curl 等工具生成测试用例,同时提供基于链式调用的编写方法,简化测试用例的编写过程。
  5. 应对复杂测试场景:借助 variables、extract、validate、hooks 等机制,轻松构建复杂的测试场景。
  6. 插件化扩展:内置了丰富的函数库,并支持使用 go、python、java 等主流编程语言编写自定义函数,轻松扩展更多功能。
  7. 高效的性能测试:无需额外设置即可进行压力测试,单机轻松支持超过1万 VUM,配合分布式负载能力,可实现大规模压力测试。
  8. 网络性能监测:在进行场景化接口测试的同时,还能额外监测网络链路的性能指标,如 DNS 解析、TCP 连接、SSL 握手、网络传输等。
  9. 一键快速部署:通过二进制命令行工具分发,无需依赖特定环境,一条命令即可在 macOS、Linux、Windows 上迅速完成安装部署。

官方网址:

https://httprunner.com/

2,安装

1)使用pip安装

代码语言:javascript
复制
pip install httprunner

2)安装hrp命令

GitHub上下载安装包:

代码语言:javascript
复制
https://github.com/httprunner/httprunner/releases 

选择合适的安装包

3)下载完成后,进行解压,加入全局变量中

3 使用

1)在工作目录中,终端执行命令,创建ebusiness项目

hrp startproject ebusiness

目录结构:

  • har 录制的文件目录
  • results 报告目录
  • testcases 测试用例目录
  • .env 环境配置文件
  • .gitignore 传git仓库时忽略文件
  • debugtalk.py 辅助函数功能文件
  • proj.json 记录创建项目的信息

2)修改.env 环境配置文件

代码语言:javascript
复制
base_url=http://192.168.31.57:8000/

base_url为测试所需要的根目录

3)在testcases目录中建立测试用例test_ebusiness.yml。(在testcases目录下有多个示例用例,您可以删除)

代码语言:javascript
复制
#表示下面为配置段
config:
    #测试主标题
name: 测试电子商务模块
#定义全局变量
variables:
   #基础的URL
       base_url:  "http://127.0.0.1:8000"
                     
#表示下面为测试用例段
teststeps:
-
    #定义此用例名称
    name: 登录首页
    #请求参数
    request:
    #请求方法
        method: GET
        #URL地址
        url: $base_url
    #提取响应的数据并存储到变量中
    extract:  
     #获取名为csrftoken的cookier参数
         - csrftoken: cookies.csrftoken 
     validate:
     #验证返回码是200
         - eq: ["status_code", 200]
-
    #定义此用例名称
    name: 登录验证
    #定义变量     
    variables:
    #定义用户名
        username: "cindy"
        #定义密码,密码经过SHA256散列
        password: "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92"
    #请求参数
    request:
        #请求方法
        method: POST
        #URL地址
         url: $base_url/login_action/
         #定义cookies参数
         with_cookies:
           csrftoken: $csrftoken
         #定义头
         headers:
            X-CSRFToken: "$csrftoken" 
         #定义请求参数
         data:  
            username: $ username      
            password: $ password  
            csrfmiddlewaretoken: "$csrftoken"
     validate:
          validate:
          #验证返回码是200
          - eq: ["status_code", 200]
          - eq: [url, $base_url/goods_view/]
          - eq: [encoding, utf-8] 
          - eq: [reason, OK]

HttpRunner 的测试用例由两个核心部分构成:

配置(config):这是测试用例的共享配置环节,涵盖了诸如用例名称、基础 URL、参数化数据源以及是否启用 SSL 验证等设置。

测试步骤(teststeps):这部分是一系列有序的操作步骤,其设计理念借鉴了 go interface,能够灵活支持各种协议和测试类型的扩展,甚至包括用户界面(UI)自动化测试。每个 step 都是一个 HTTP 请求,描述信息仅包含了 HTTP 请求和结果校验的核心要素。

变量的定义在step或config的variables中。

运行成功,产生pytest格式的python文件。

代码语言:javascript
复制
# NOTE: Generated By HttpRunner v4.3.5
# FROM: .\testcases\test_ebusiness.yml
from httprunner import HttpRunner, Config, Step, RunRequest
class TestCaseTestEbusiness(HttpRunner):
    config = Config("测试电子商务模块").variables(**{"base_url": "http://127.0.0.1:8000"})    
    teststeps = [
        Step(
            RunRequest("登录首页")
            .get("$base_url")
            .extract()
            .with_jmespath("cookies.csrftoken", "csrftoken")
            .validate()
            .assert_equal("status_code", 200)
        ),
        Step(
            RunRequest("登录成功,进入商品页面")
            .with_variables(
                **{
                    "username": "cindy",
                    "password": "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92",
                }
            )
            .post("$base_url/login_action/")
            .with_headers(**{"X-CSRFToken": "$csrftoken"})
            .with_data(    
                {
                    "username": "$username",
                    "password": "$password",
                    "csrfmiddlewaretoken": "$csrftoken",
                }
            )
            .validate()
            .assert_equal("status_code", 200)
            .assert_equal("url", "$base_url/goods_view/")
            .assert_equal("encoding", "utf-8")
            .assert_equal("reason", "OK")
        ),
    ]
if __name__ == "__main__":
TestCaseTestEbusiness().test_start()

可以通过pytest来运行这个测试用例

另:网上说可以通过

代码语言:javascript
复制
hrp run testcases/test_demo.yml --gen-html-report

运行,并且产生测试报告

代码语言:javascript
复制
hrp boom testcases/test_demo.yml --spawn-count 10 --spawn-rate 2

运行性能测试

我没有实现,据说要连接到google上

Httprunner测试用例可以用yam来写,也可以用json来写。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档