httprunner V4.3.5 安装与使用--快速上手(超详细-超长篇)

一、Httprunner介绍

1、什么是Httprunner

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

核心特征:

  1. 继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求
  2. 测试用例与代码分离,采用YAML/JSON的形式描述测试场景,保障测试用例具备可维护性
  3. 测试用例支持分层机制,充分实现测试用例的复用
  4. 测试用例支持参数化和数据驱动机制
  5. 使用 skip 机制实现对测试用例的分组执行控制
  6. 支持热加载机制,在文本测试用例中轻松实现复杂的动态计算逻辑
  7. 基于 HAR 实现接口录制和用例生成功能(har2case)
  8. 结合 Locust 框架,无需额外的工作即可实现分布式性能测试
  9. 执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完结合
  10. 测试结果统计报告简洁清晰,附带详尽统计信息和日志记录
  11. 具有可扩展性,便于扩展实现 Web 平台化(HttpRunnerManager)

2、HttprunnerV4版本介绍

  • 开发语言:Golang + Python
  • 脚本转换工具:HAR/Postman/Swagger/Curl
  • 脚本格式类型:YAML/JSON/pytest/gotest
  • 脚本执行引擎:Go 自研 + Python pytest
  • 接口测试报告:html 自研(Go template) + pytest-html/allure
  • 性能测试引擎:Go Boomer
  • 运行环境依赖:Go 引擎无需依赖、pytest 引擎依赖 Python 3.7+
  • 安装部署方式: curl/wget/pip

v1/v2/v3/v4 版本对比概览:
在这里插入图片描述

3、HttprunnerV4版本Go & Python 功能对比

在这里插入图片描述

4、Httprunner 与 unittest & pytest 的区别

使用语言和用途:

  • Httprunner‌ 是一个面向HTTP(S)协议的通用开源测试框架,支持YAML、JSON等多种格‌httprunner‌主要是一个用于接口自动化测试和性能测试的框架,支持HTTP/HTTPS/HTP2/WebSocket/TCP/RPC协议,使用YAML或JSON格式的文件描述测试用例,特别适合接口测试和性能测试。
  • unittest‌是Python自带的测试框架,主要用于编写单元测试,提供测试用例的编写、测试套件的组织、测试执行和断言等基本功能。
  • pytest‌也是一个用于Python的测试框架,可以进行单元测试和功能测试,具有更简洁的语法和灵活的自动发现测试功能,支持参数化测试、测试装饰器和插件机制等。

学习曲线和复杂性:

  • httprunner‌的语法相对简单,测试脚本编写和维护较为容易,适合初学者快速上手
  • unittest‌语法相对繁琐,但在Python标准库中集成,无需额外安装,对于熟悉Python的开发者来说,这是一个优势。
  • pytest‌的语法简单易懂,学习曲线较为平缓,支持多种测试方式和插件,可以满足复杂的测试需求。

功能和特性:

  • httprunner‌支持请求参数化、断言和全局变量等功能,提供丰富的测试报告和日志功能
  • unittest‌提供了测试用例的编写、测试套件的组织、测试执行和断言等基本功能,适合进行单元测试
  • pytest‌支持参数化测试、fixture、mock等多种功能,可以生成详细的测试报告,支持并发测试,提高测试效率。‌

优劣势总结:

  • httprunner‌的优势在于其简单的语法和易用性,并支持多协议HTTP(S)/HTP2/WebSocket/TCP/RPC等,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。
  • unittest‌作为Python自带的测试框架,无需额外安装,但语法相对繁琐。它适合进行单元测试,是Python开发者熟悉的选择。
  • pytest‌以其简洁的语法和强大的功能受到开发者的青睐,支持多种测试方式和插件,可以满足复杂的测试需求。劣势在于对于需要大量IO操作的测试可能存在性能瓶颈

二、安装

1、Httprunner下载

  • 1.1、一键安装部署(MAC):
$ bash -c "$(curl -ksSL https://httprunner.com/script/install.sh)"

如报错提示:无权限则使用sudo命令进行安装:

sudo bash -c "$(curl -ksSL https://httprunner.com/script/install.sh)"
  • 检查httprunner安装版本:
httprunner -V or hrun -V 

在这里插入图片描述

出现版本号即安装成功。

  • 检查hrp是否安装成功:
hrp -h

出现下图则安装成功
在这里插入图片描述

  • 1.2、通过pip安装:(通用Mac&Windows):
    建议:安装到虚拟环境下,这样可切换使用不同版本的httprunner
pip install httprunner==4.3.5   //指定版本安装,不加默认下载最新

查看版本:

hrun -V or httprunner -V     

“V”一定要大写,不然如下图报错:
在这里插入图片描述

  • 常见报错:You should consider upgrading via the ‘python -m pip install --upgrade pip’ command.
    You are using pip version 10.0.0, however version 20.0.0 is availa
    • 解决方案:
python -m pip install --upgrade pip     //更新升级pip

升级后依然下载失败,可能pip源内找不到httprunner(Windows常见),更新pip的镜像源即可:

pip install -i https://pypi.douban.com/simple httprunner    //豆瓣镜像源
pip install -i https://pypi.tuna.tsinghua.edu.cn httprunner  //清华大学镜像源

2、Hrp下载

1. 下载hrp
安装httprunner V4.3.5后,还无法使用hrp命令行工具,需要下载编译产物,在 GitHub Releases
页面中自行选择版本进行下载:
在这里插入图片描述
2. 配置hrp的环境变量:

  • Mac:打开终端进入配置
vim ~/.bash_profile    //如果使用的是bash shell 
vim ~/.zshrc	     //如果使用的是zsh shell

进入后添加环境变量:(vim:敲“i”->Enter进入编辑),将以下代码添加进环境变量

export PATH="/usr/local/hrp/bin:$PATH"    // 该路径 /usr/local/hrp/bin/hrp 为hrp的文件路径

保存并关闭文件。(vim:保存退出=>Esc–>:wq–>Enter 保存并退出)

生效配置:

source ~/.bash_profile
source ~/.zshrc

验证环境变量配置是否成功:

hrp -h  or  hrp -v

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

  • Windows配置hrp环境变量:
    将下载的包解压后的hrp.exe放在C盘httprunner文件目录下(自定义目录)在【我的电脑=>属性=>高级系统设置=>环境变量=>系统变量】,在PAHT下新 增变量:C:\httprunner 确认保存即可。
    在这里插入图片描述
    验证环境变量:
hrp -h  or  hrp -v

出现版本号 or 出现帮助页面即可,参考以上。

三、快速上手使用

1、创建手脚架项目

  • 新增手脚架项目:
    使用以下命令新增Httprunner项目并命名为demo:
hrp startproject demo

如下图即新增成功:
在这里插入图片描述

打开demo项目如下图:
在这里插入图片描述

2、录制生成Har文件

  • Charles 录制 HAR 文件:(fiddler & 浏览器开发者模式F12均可抓包导出为har文件)
    以下采用 Charles 等抓包工具为例: 抓取接口导出
    在这里插入图片描述
    存为har格式文件:
    在这里插入图片描述

3、将Har转换成测试用例

  • HttpRunner4.3.5将所有的转换功能都集中在 hrp convert 一个指令中。通过执行 hrp convert -h 可以查询该指令的功能简介、用法和各个选项的介绍:
hrp convert --from-har xxx.har    //将HAR文件默认转换成转换成Json文件      文件名为xxx_test.json
hrp convert --from-har xxx.har --to-yaml   //将HAR文件转换成YAML文件     文件名为xxx_test.yaml
hrp convert --from-har xxx.har --to-json   //将HAR文件转换成Json文件     文件名为xxx_test.json
hrp convert --from-harxxx.har --to-pytest   //将HAR文件转换成pytest文件  文件名为xxx_test.py

在这里插入图片描述

  • 注释:执行hrp convert --from-har xxx.har --to-pytest命令,会先将 xxx.har转化成xxx_test.json,然后再将xxx_test.json转化成xxx_test_test.py
  • hrp convert 指令支持指定目录输出,–output-dir 后接测试用例的期望输出目录的路径,用于将转换生成的测试用例输出到对应的文件夹:
hrp convert --from-har xxx.har --to-pytest --output-dir demo/cases   //输入文件到当前目录下的demo/cases文件夹中

如下:
在这里插入图片描述

  • 执行测试用例:
    **JSON/YAML(/pytes)**类型的测试用例文件,httprunnerV4.3.5使用hrp run 命令执行:
hrp run xxx.json           ##执行json测试用例   
hrp run xxx.yaml          ##执行yaml测试用例
hrp run testcases/       ##执行testcases文件下所有测试用例

pytest文件可通过pytest命令执行改测试用例文件pytest xxx.py

目前的 HttpRunner 支持运行 pytest 的测试用例进行接口测试。由于 HttpRunner wraps pytest,因此pytest 所有的参数都可以与 hrp 命令一起使用。
在这里插入图片描述

4、手工编写测试用例

pytest 、 YAML 和 JSON 格式的测试用例完全等价,包含的信息内容也完全相同,在httprunner中,测试用例组织主要基于三个概念

  • 1测试用例集(testsuite):对应一个YAML/JSON/Python文件,包含单个或多个测试用例文件。通 俗来将,测试用例集就是「一堆」测试用例。对应地,HttpRunner 除了支持指定单个文件来运行某一测试用例,也支持指定多个文件或指定文件夹来运行一整个测试用例集。
  • 测试用例(testcase): 对应一个YAML/JSON/Python文件,包含单个或多个测试步骤。
  • 测试步骤(teststep): 对应YAML/JSON/Python中 teststeps 下的一个节点,描述单次接口测试 的全部内容,包括发起接口请求、解析响应结果、检验结果等。

pytest 、 YAML 和 JSON 格式的测试用例,用例结构整体结构都包含两部分:

  • config: 每个测试用例都必须有config部分,作为整个测试用例的全局配置项,用于配置用例:
    在这里插入图片描述

  • teststeps:包含测试步骤相关信息,测试用例存在顺序关系,运行时将从前往后依次运行 各个测试步骤,其中步骤可以引用其他测试用例:
    在这里插入图片描述

示例:
request.yaml

config:
    name: test
    variables: {
   }
    verify: false

teststeps:
    - name: "test"
      request:
        method: GET
        url: http://127.0.0.1:8080/api/test/
        params:
            action: list_course
            pagenum: "1"
            pagesize: "20"
        headers:
            Accept: application/json, text/plain, */*
            Accept-Encoding: gzip, deflate, br
            Accept-Language: zh-CN,zh;q=0.9
            Connection: keep-alive
            Host: 127.0.0.1:8080
            Referer: http://127.0.0.1:8080/mgr/test/index.html
            User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36
            X-CSRFToken: ABjPB9CYXuc0dPy8Wu2hJppDVu1sdhWRrfoWPBM7DimSrMtkHVUAoNAXeWqOIh0d
        cookies:
            csrftoken: ABjPB9CYXuc0dPy8Wu2hJppDVu1sdhWRrfoWPBM7DimSrMtkHVUAoNAXeWqOIh0d
            sessionid: b1g42w3ynatxpphy0fhahpdi7g4pn2vg
      extract:
      	  msg: body.msg
      	  cookie: header.cookie
      validate:
        - check: status_code
          assert: equals
          expect: 200
          msg: assert response status code
        - eq: ["body.msg","成功"]

request.py

from httprunner import HttpRunner, Config, Step, RunRequest


class TestCaseRequestsTest(HttpRunner):
    config = (
        Config("request methods testcase with functions")
    )

    teststeps = [
        Step(
            RunRequest("")
            .get("http://127.0.0.1:8080/api/test/")
            .</
安装Docker并安装插件,可以按照以下步骤进行操作: 1. 首先,安装Docker。可以按照官方文档提供的步骤进行安装,或者使用适合您操作系统的包管理器进行安装。 2. 安装Docker Compose插件。可以使用以下方法安装: 2.1 下载指定版本的docker-compose文件: curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 2.2 赋予docker-compose文件执行权限: chmod +x /usr/local/bin/docker-compose 2.3 验证安装是否成功: docker-compose --version 3.安装插件之前,可以测试端口是否已被占用,以避免编排过程中出错。可以使用以下命令安装netstat并查看端口号是否被占用: yum -y install net-tools netstat -npl | grep 3306 现在,您已经安装了Docker并安装了Docker Compose插件,可以继续进行其他操作,例如上传docker-compose.yml文件到服务器,并在服务器上安装MySQL容器。可以参考Docker的官方文档或其他资源来了解如何使用Docker和Docker Compose进行容器的安装和配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Docker安装docker-compose插件](https://blog.csdn.net/qq_50661854/article/details/124453329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Docker安装MySQL docker安装mysql 完整详细教程](https://blog.csdn.net/qq_40739917/article/details/130891879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生活De°咸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值