ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何用 Hoppscotch CLI 的 iteration-count 与 iteration-data 选项运行数据驱动集合测试

如何用 Hoppscotch CLI 的 iteration-count 与 iteration-data 选项运行数据驱动集合测试 如何用 Hoppscotch CLI 的 iteration-count 与 iteration-data 选项运行数据驱动集合测试【免费下载链接】hoppscotchOpen-Source API Development Ecosystem • https://hoppscotch.io • Offline, On-Prem Cloud • Web, Desktop CLI • Open-Source Alternative to Postman, Insomnia项目地址: https://gitcode.com/GitHub_Trending/ho/hoppscotch当你的 Hoppscotch 集合collection JSON 文件需要用多组不同的参数重复执行时——例如对 3 个不同的回显地址各发一次请求、或用一组 CSV 数据行驱动同一组测试断言——Hoppscotch CLI 提供了两个直接服务于该场景的选项--iteration-count指定集合要重复执行的轮数--iteration-data指定一个 CSV 数据文件让每一轮迭代从该文件中取一行数据替换进环境变量。两者都作用于hopp test命令属于 hoppscotch-cli README 中列出的命令选项。准备条件安装 CLI 前先按平台装好编译依赖README 给出了各平台的依赖安装方式例如 Debian/Ubuntu 系sudo apt-get install python g build-essentialAlpine Linux 对应sudo apk add python3 make gAmazon Linux、Arch、RHEL/Fedora 的对应命令同样列在 README 的 Install 一节。依赖就绪后从 npm 全局安装npm i -g hoppscotch/cli安装完成后需要准备三类文件一个 Hoppscotchcollection.json文件或工作区中的集合 ID一个可选的环境变量 JSON 文件通过-e, --env传入内容为KEY: value形式的键值对例如{ ENV1: value1, ENV2: value2 }一个用于--iteration-data的 CSV 文件下一节说明格式。准备 iteration-data 使用的 CSV 数据文件--iteration-data file_path接受 CSV 文件路径文件第一行是表头后续每行是一组迭代数据。README 给出的格式示例为key1,key2,key3 value1,value2,value3 value4,value5,value6替换规则是每一轮迭代对应行的各值会作为同名 key 写入环境第 1 轮用value1,value2,value3第 2 轮用value4,value5,value6以此类推。仓库的 e2e 测试夹具提供了一个真实示例 iteration-data-export.csvURL,BODY_KEY,BODY_VALUE https://echo.hoppscotch.io/1,,body_value1 https://echo.hoppscotch.io/2,,body_value2 https://echo.hoppscotch.io/3,,body_value3注意第二列BODY_KEY在数据行中是空值解析逻辑会忽略空字符串值的列空出来的 key 回退到-e环境文件里提供的值见 test.ts 的 CSV 转换代码。对应的环境文件 iteration-data-envs.json 为{ v: 0, name: Iteration data environments, variables: [ { key: URL, value: https://httpbin.org/get }, { key: BODY_KEY, value: overriden-body-key-at-environment }, { key: BODY_VALUE, value: overriden-body-value-at-environment } ] }测试夹具集合 iteration-data-tests-coll.json 展示了这些 key 如何被消费请求的endpoint写成URLJSON body 写成{BODY_KEY:BODY_VALUE}每轮迭代时这些变量会被当前行或环境中的值替换。用 iteration-count 重复执行集合基本命令形式hopp test collection.json --iteration-count 3--iteration-count no_of_iterations接受一个正整数把整个集合重复执行 N 轮。e2e 测试 对成功行为的断言是标准输出中依次出现Iteration: 1/3、Iteration: 2/3、Iteration: 3/3且进程无错误退出。也就是说多轮执行时每一轮都会打印形如Iteration: n/N的迭代头具体打印逻辑见 collections.ts。两个边界行为值得注意--iteration-count 1时输出中不会出现Iteration: 1/1迭代头集合按普通单次执行走取值非法会直接报INVALID_ARGUMENT漏写数值--iteration-count后无参数、非数字如NaN、小于 1 的数如-5都会触发该错误码源码中的错误信息为 The value must be a positive integer。用 iteration-data 做数据驱动执行hopp test collection.json --iteration-data ./data.csv不提供--iteration-count时迭代轮数会从 CSV 的数据行数推断collections.ts 中resolvedIterationCount iterationCount ?? iterationData?.length ?? 1即上面 3 行数据的 CSV 会执行 3 轮输出Iteration: 1/3到Iteration: 3/3。结合环境文件时命令为hopp test collection.json --iteration-data ./data.csv -e ./envs.json数据优先级规则同样由 test.ts 与 collections.ts 实现并有 e2e 用例断言CSV 行数据优先于环境变量当 CSV 与-e环境文件存在同名 key 时使用 CSV 当前行的值缺失项回退到环境CSV 中为空的列不会覆盖环境文件里同名的值每轮迭代开始时环境会重置为本轮初始状态上一轮的变更不会带入下一轮迭代数超过 CSV 行数时最后一行数据会被重复使用源码中取Math.min(count, iterationData.length - 1)行。同时提供两个选项时谁生效如果命令里同时出现--iteration-data和--iteration-count迭代次数以--iteration-count为准而不是按 CSV 行数推断。e2e 测试明确验证了这一点3 行数据的 CSV 加上--iteration-count 5时输出中出现的是Iteration: 1/5到Iteration: 5/5。超出 CSV 行数的第 4、5 轮会沿用最后一行数据。验证结果与错误判定一次执行完成后可以从三处判断结果迭代头多轮执行时 stdout 中的Iteration: n/N行应覆盖全部轮次测试与报告集合内请求的 test script如夹具中的pw.expect(...)断言执行结果会随报告输出最终进程按结果以 0 或 1 退出失败时 stderr 打印Exited with code 1JUnit 报告可选追加--reporter-junit [path]可将 JUnit 报告导出到指定路径便于接入 CI。CLI 参数层的错误码在 e2e 测试 中有完整覆盖可作为排错对照现象错误码触发条件迭代参数非法INVALID_ARGUMENT--iteration-count漏写数值、非数字、小于 1--iteration-data漏写路径数据文件类型不符INVALID_DATA_FILE_TYPE--iteration-data指向的文件扩展名不是.csv数据文件不存在FILE_NOT_FOUND给出的 CSV 路径在磁盘上不存在限制--iteration-data只接受.csv扩展名的文件其他格式哪怕内容相同会被直接拒绝CSV 中空字符串的单元格会被忽略并回退到环境变量全空行会被整体跳过Hoppscotch CLI 目前处于 alpha 阶段遵循 pre-1.0 语义化版本约定选项行为在 1.0 之前可能随版本变化见 README 的 Versioning 一节。如果需要把数据驱动执行的结果纳入 CI 流水线下一步就是加上--reporter-junit生成 JUnit 报告更多命令选项可参考 hoppscotch-cli README 的 Options 一节。【免费下载链接】hoppscotchOpen-Source API Development Ecosystem • https://hoppscotch.io • Offline, On-Prem Cloud • Web, Desktop CLI • Open-Source Alternative to Postman, Insomnia项目地址: https://gitcode.com/GitHub_Trending/ho/hoppscotch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表