httprunner4详解

httpruuner官方文档:https://httprunner.com/docs/introduction/overview/

案例1:使用电商开源项目演示:

项目地址:https://github.com/macrozheng/mall

案例2:使用erp2项目演示:

开源项目:http://erp2.hzb-it.com/

1.Httprunner环境搭建

HttpRunner v4.0 同时采用了 Golang/Python 两种编程语言,底层会有两套相对独立的执行引擎,兼具 Golang 的高性能和 pytest 的丰富生态。

方式一:直接部署(以Windows系统为例)

你可以在 GitHub Releases 页面中,自行选择版本进行下载,下载地址:https://github.com/httprunner/httprunner/releases,下载完成后,解压到自己电脑任意目录, 如下:D:\soft\httpruner_exe

将解压的目录,添加到系统环境变量:在「我的电脑=>属性=>高级系统设置=>环境变量」配置中,在 PATH 下新增系统变量,将 解压目录写入 PATH。配置成功后cmd输入hrp,结果如下:

安装配置完成后能使用hrp命令

方式二:安装依赖包(开发者模式)

HttpRunner 除了可以作为命令行工具提供给用户进行使用,还可以作为库函数,供开发者调用进行二次开发。

安装httprunner库:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple httprunner #安装httprunner,安装后,就可以使用hrun命令
pip install har2case#用于将har文件转化成yaml/json/pytest测试用例

安装完成后,使用以下命令检验

C:\Users>har2case -V
0.3.1
C:\Users>httprunner -V
v4.3.5

安装Allure命令行:下载Allure命令行,下载地址:https://github.com/allure-framework/allure2/releases/,将下载到本地的allure压缩包解压到指定目录,并添加相应的环境变量Path=D:\Program Files\Allure\allure-2.16.0\bin,在命令行中输入allure,不出现报错即可

安装allure-pytest插件

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple allure-pytest#安装python的allure插件,可生成漂亮的测试报告

>>>待续

2. Httprunner快速上手

2.1创建脚手架

 使用命令:hrp startproject dmo

 新建项目的层级目录如下:

2.2 录制脚本,导出.har文件

使用fiddler用录制 Gitee上的开源项目:http://erp2.hzb-it.com/为例:

step1:打开fidddler设置过滤域名(erp2.hzb-it.com)、过滤js、css静态文件等[    使用正则表达式:REGEX:(?insx)/[^\?/]*\.(css|ico|jpg|png|gif|bmp|wav|js|jpeg)(\?.*)?$    ],设置如下图:

 设置后,点击Actions->Run Fliterset now,设置的过滤器正式生效

Step2:抓取一条业务用例: 登录—>组织和人员—>职位管理—>新增职位为:测试工程师

Step3:点击File ->Exprot Sessions ->HTTPArchive v1.2 ->将导出的.var文件放到项目的har目录

2.3 har文件转成测试用例

方式一:使用hrp命令转换

 (1)使用命令,将目标目录har下的.har文件转成 yaml文件

hrp convert --from-har E:\work5-2\HttpRunner_demo\har\test_login.har --to-yaml --output-dir E:\work5-2\HttpRunner_demo\testcases

注意:如果不标注--from-har会失败

 (2)使用命令,将目标目录testcase下的.yaml文件转成 json文件

hrp convert --from-yaml E:\work5-2\HttpRunner_demo\testcases\test_login_test.yaml --to-json --output-dir E:\work5-2\HttpRunner_demo\testcases

 (3)使用命令,将目标目录testcase下的.json文件转成 pytest文件

hrp convert --from-har E:\work5-2\HttpRunner_demo\har\test_login.har --to-pytest --output-dir E:\work5-2\HttpRunner_demo\testcases

方式二:使用har2case转换

使用har2case可以直接将har文件转换为yaml/json格式的测试用例

har2case -h
usage: har2case [-h] [-V] [--log-level LOG_LEVEL] [-2y] [-fmt FMT_VERSION] [--filter FILTER] [--exclude EXCLUDE]
                [har_source_file]

Convert HAR(HTTP Archive) to YAML/JSON testcases for HttpRunner.

positional arguments:
  har_source_file       Specify HAR source file

options:
  -h, --help            show this help message and exit
  -V, --version         show version
  --log-level LOG_LEVEL
                        Specify logging level, default is INFO.
  -2y, --to-yml, --to-yaml
                        Convert to YAML format, if not specified, convert to JSON format by default.
  -fmt FMT_VERSION, --format FMT_VERSION
                        Specify YAML/JSON testcase format version, v2 corresponds to HttpRunner 2.2.0+.
  --filter FILTER       Specify filter keyword, only url include filter string will be converted.
  --exclude EXCLUDE     Specify exclude keyword, url that includes exclude string will be ignored, multiple keywords
                        can be joined with '|'

方式三:使用httprunner 的make命令转换

 如果直接使用hrp命令转换yaml/json为pytest格式失败,可以使用httprunner make命令转换为pytest测试用例

httprunner make E:\work5-2\HttpRunner_demo\testcases\test_login_test.yaml

 2.4 使用pytest 运行测试用例

import pytest
import os
if __name__=="__main__":

    pytest.main(['-s', '-v','./testcases/test_login_test_test.py','--alluredir', './report/tmp', "--clean-alluredir"])
    os.system(r"allure generate ./report/tmp -o ./report/html --clean")

 2.5  v4 版本的 Go & Python 功能对比

3. httprunner详解

3.1 测试用例

一条测试用例(testcase)应该是为了测试某个特定的功能逻辑而精心设计的,并且至少包含如下几点:

  • 明确的测试目的(achieve a particular software testing objective)
  • 明确的输入数据(inputs)
  • 明确的运行环境(execution conditions)
  • 明确的测试步骤描述(testing procedure)
  • 明确的预期结果(expected results)

按照上述的测试用例定义,HttpRunner 的测试用例应该保证是完整并且可以独立运行的。

从测试用例的组成结构来看,一个测试用例可以分为「测试脚本」和「测试数据」两部分:

  • 测试脚本:重点是描述测试的业务功能逻辑,包括预置条件、测试步骤、预期结果等,并且可以结合辅助函数(debugtalk.go/debugtalk.py)实现复杂的运算逻辑
  • 测试数据:重点是对应测试的业务数据逻辑,例如数据驱动文件中的定义的 UUID、用户名等等,以及环境配置文件中定义的 base_url 环境变量等等

3.2 httprunner的YAML/JSON格式测试用例手工编写

httprunner 4.x 版本,YAML/JSON 格式用例(testcase)结构延续了之前的config 和 teststeps 两个部分

3.1.2 config配置部分

config的modle定义如下:

class TConfig(BaseModel):
    name: Name
    verify: Verify = False
    base_url: BaseUrl = ""
    # Text: prepare variables in debugtalk.py, ${gen_variables()}
    variables: Union[VariablesMapping, Text] = {}
    parameters: Union[VariablesMapping, Text] = {}
    # setup_hooks: Hooks = []
    # teardown_hooks: Hooks = []
    export: Export = []
    path: Text = None
    # configs for other protocols
    thrift: TConfigThrift = None
    db: TConfigDB = TConfigDB()

 Tconfig

每个测试用例都应该有一个config部分,您可以在其中配置测试用例级别的设置,有以下属性

属性名称      是否必填        作用
name          必填         指定测试用例名称。这将显示在执行日志和测试报告中。
base_url      可选         如果base_url指定,则 teststep 中的 url 可以设置相对路径部分
verify        可选         https请求时,是否校验证书,默认True,忽略证书校验可以设置为False
headers       可选         公共请求头部
variables     可选    指定测试用例的公共变量。每个测试步骤都可以引用未在步骤变量中设置的配置变量。换句话说,步骤变量比配置变量具有更高的优先级。
export        可选    (早期版本用的output)指定导出的测试用例会话变量,把变量暴露出来,设置为全局变量
parameters    可选    参数化设置,对整个文件生效

#除了上面的一些自动化会用到的参数,4.x 版本新增了一些关键字
属性名称     是否必填         作用
parameters_setting    可选    配置参数驱动的具体策略
think_time            可选    设置思考时间,性能测试用到
websocket             可选    设置 WebSocket 断开重连的最大次数和间隔等(todo)
weight                可选    性能测试用到,分配给当前测试用例的虚拟用户权重
environs              可选    配置环境变量(如果未指定则会从 .env 文件导入)
path                  可选    当前测试用例所在路径(通常不需要手工填写)

config部分示例 config_demo.yaml

config:
    name: "request methods testcase with functions"
    variables:
        foo1: config_bar1
        foo2: config_bar2
        expect_foo1: config_bar1
        expect_foo2: config_bar2
    headers:
        User-Agent: ${get_user_agent()}
    verify: False
    export: ["foo3"]

3.1.2 teststeps测试步骤部分

每个用例可以有多个测试步骤,每个步骤可以看成是一个接口的请求,发送 http 协议接口,可以用到request 关键字,相关参数和requests 库的参数完全一致。

teststep定义模型如下:

class TStep(BaseModel):
    name: Name
    request: Union[TRequest, None] = None
    testcase: Union[Text, Callable, None] = None
    variables: VariablesMapping = {}
    setup_hooks: Hooks = []
    teardown_hooks: Hooks = []
    # used to extract request's response field
    extract: VariablesMapping = {}
    # used to export session variables from referenced testcase
    export: Export = []
    validators: Validators = Field([], alias="validate")
    validate_script: List[Text] = []
    retry_times: int

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据--hdfs--java编程

环境: virtualbox ubantu1604 Linux idea社区版2023 jdk1.8 hadoop相关依赖 使用java操作 1. 判断/user/stu/input/test.txt文件是否存在,存在则读出文件内容,打印在控制台上。反之,输出“文件不存在”。 package abc;impo…

【JS进阶】第二天

JavaScript 进阶 - 第2天 了解面向对象编程的基础概念及构造函数的作用,体会 JavaScript 一切皆对象的语言特征,掌握常见的对象属性和方法的使用。 了解面向对象编程中的一般概念能够基于构造函数创建对象理解 JavaScript 中一切皆对象的语言特征理解引用…

字节跳动面试被拷打:高效处理大量数据的JavaScript技巧

一、文章内容 时间分片宏任务微任务前置内容实现时间分片 二、时间切片 什么是时间切片?通过字面意思我们不难理解时间切片就是将时间分成多个片段进行一一渲染数据,时间切片是个抽象的问题,我们可能会想到JavaScript中window自带的setTimeout的延迟函数或者是 w…

(附源码)基于Spring Boot和Vue的前后端分离考研资料分享平台的设计与实现

前言 💗博主介绍:✌专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2024年Java精品实战案例《100套》 🍅文末获取源码联系🍅 &#x1f31…

操作符详解(C语言)—第三期

逻辑操作符 逻辑操作符有哪些&#xff1a; && 逻辑与 || 逻辑或区分逻辑与和按位与 区分逻辑或和按位或 1&2----->0 1&&2---->1 1|2----->3 1||2---->1逻辑与和或的特点&#xff1a; 360笔试题 #include <stdio.h&…

乐企数字化电子发票(基础版)开票能力测试报告

能力简介&#xff1a;纳税人销售货物或提供服务时&#xff0c;可以通过本能力开具数电票。 纳税人可将本能力中的各类规则和接口嵌入本单位信息化系统中&#xff08;如&#xff1a;销售、 收款、结算等&#xff09;&#xff0c;实现数电票开具流程和商业行为的融合&#xff0c;…

20240317-2-推荐算法FTRL

FTRL FTRL(Follow the Regularized Leader) 由Google的H. Berendan McMahan 等人于2010年提出【4】,FTRL是一种在线最优化求解算法,结合L1-FOBOS和L1-RDA算法,用于解决在线学习中,权重参数不能产生较好的稀疏性的问题。 由于在线学习涉及内容较多&#xff0c;本文从提升模型稀疏…

吴恩达深度学习笔记:浅层神经网络(Shallow neural networks)3.1-3.5

目录 第一门课&#xff1a;神经网络和深度学习 (Neural Networks and Deep Learning)第三周&#xff1a;浅层神经网络(Shallow neural networks)3.1 神经网络概述&#xff08;Neural Network Overview&#xff09; 第一门课&#xff1a;神经网络和深度学习 (Neural Networks an…

【数据结构与算法】算法复杂度

一、什么是复杂度&#xff1f; 程序执行时需要的计算量和内存空间&#xff0c;其中计算量是指时间复杂度&#xff0c;计算量大则需要时间久&#xff1b;内存空间是指空间复杂度和代码是否简洁无关&#xff0c;而是指计算机的cpu和内存计算复杂程度。 复杂度是数量级&#xff0…

Day43:WEB攻防-PHP应用SQL注入符号拼接请求方法HTTP头JSON编码类

目录 PHP-MYSQL-数据请求类型 PHP-MYSQL-数据请求方法 PHP-MYSQL-数据请求格式 知识点&#xff1a; 1、PHP-MYSQL-SQL注入-数据请求类型 2、PHP-MYSQL-SQL注入-数据请求方法 3、PHP-MYSQL-SQL注入-数据请求格式 PHP-MYSQL-数据请求类型 SQL语句由于在黑盒中是无法预知写法的…

Java代码基础算法练习-求给定范围内所有数之和-2024.03.22

任务描述&#xff1a; 输入两个整数n和 m(0<n<m<20)&#xff0c;求此范围内所有数据之和。(包括n和m) 任务要求&#xff1a; 代码示例&#xff1a; package march0317_0331;import java.util.Scanner;/*** 计算两个整数之间&#xff08;包括这两个整数&#xff09;所…

设计数据库之内部模式:SQL基本操作

Chapter4&#xff1a;设计数据库之内部模式&#xff1a;SQL基本操作 笔记来源&#xff1a; 1.《漫画数据库》—科学出版社 2.SQL | DDL, DQL, DML, DCL and TCL Commands 设计数据库的步骤&#xff1a; 概念模式 概念模式(conceptual schema)是指将现实世界模型化的阶段进而&…

Harbor高可用(nginx和keepalived)

Harbor高可用&#xff08;nginx和keepalived&#xff09; 文章目录 Harbor高可用&#xff08;nginx和keepalived&#xff09;1.Harbor高可用集群部署架构1.1 主机初始化1.1.1 设置网卡名和ip地址1.1.2 设置主机名1.1.3 配置镜像源1.1.4 关闭防火墙1.1.5 禁用SELinux1.1.6 设置时…

postman下载汉化以及使用

【2023全网最牛教程】10分钟快速上手Postman&#xff08;建议收藏&#xff09;_macbook postman打开慢-CSDN博客 Postman 汉化教程&#xff08;小白&#xff09;配置的具体操作_postman怎么设置中文-CSDN博客 上面是两篇参考的博客 postman是一款支持http协议的接口调试与测试…

大模型时代,5个最顶级的向量数据库

介绍5个向量数据库。 大模型时代&#xff0c;向量数据库彻底的火了&#xff0c;今天我分享业内最频繁使用的向量数据库&#xff0c;更多实践经验&#xff0c;可以文末参加我们的技术落地的讨论&#xff0c;喜欢本文记得收藏、关注、点赞。 1 Chroma 使用ChromaDB构建LLM应用程…

地平线 西之绝境完整版下载

版本介绍 v1.0.37.0|容量122GB|官方简体中文|支持键盘.鼠标.手柄|赠多项修改器 与埃洛伊同行&#xff0c;在危险壮美的边疆之地揭开种种未知的神秘威胁。此完整版可完整享受广受好评的《地平线 西之绝境™》内容和额外内容&#xff0c;包括在主线游戏后展开的后续故事“炙炎海…

Uni-app/Vue/Js本地模糊查询,匹配所有字段includes和some方法结合使用e

天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.第一步 需要一个数组数据 {"week": "全部","hOutName": null,"weekendPrice": null,"channel": "门市价","hOutId": 98,"cTime": "…

破解城市内涝难题:水文水动力模拟技术的智慧策略,复杂城市排水系统模型的建立

随着计算机的广泛应用和各类模型软件的发展&#xff0c;将排水系统模型作为城市洪灾评价与防治的技术手段已经成为防洪防灾的重要技术途径。本次培训将聚焦于综合利用GIS及CAD等工具高效地进行大规模城市排水系统水力模型的建立&#xff0c;利用SWMM实现排水系统水力模拟。讲解…

Jmeter测试计划

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

Docker之docker compose!!!!

一、概述 是 Docker 官方提供的一款开源工具&#xff0c;主要用于简化在单个主机上定义和运行多容器 Docker 应用的过程。它的核心作用是容器编排&#xff0c;使得开发者能够在一个统一的环境中以声明式的方式管理多容器应用的服务及其依赖关系。 也就是说Docker Compose是一个…