『接口测试干货』| Newman+Postman接口自动化测试完整过程

『接口测试干货』| Newman+Postman接口自动化测试完整过程

  • 1 Newman简介
  • 2 如何安装Newman?
    • 2.1 安装NodeJs
    • 2.2 安装Newman
    • 2.2 解决Newman不是内部命令
  • 3 Newman使用
    • 3.1 Newman如何运行集合?
    • 3.2 如何查看帮助文档?
    • 3.3 环境变量设置
    • 3.4 关于全局变量
    • 3.5 数据源文件
    • 3.6 如何导出变量
  • 4 测试报告
    • 4.1 newman-reporter-html安装
    • 4.2 newman-reporter-html使用
    • 4.3 htmlextra安装
    • 4.4 htmlextra使用
  • 5 关于postman使用

1 Newman简介

  • NewmanPostman的一个扩展库(NodeJs库);
  • Newman+Postman可完成接口自动化测试工作;
  • Postman导出的JSON格式文件可通过Newman的命令行执行;
  • 因为Postman运行后只有概要结果,没有像其他自动化测试框架那么完美漂亮的测试报告样式,所以引入了Newman
  • Newman可快速完成集合的运行,构造自动化以及持续集成工作。

2 如何安装Newman?

2.1 安装NodeJs

  • 下载地址:NodeJs;
  • 下载后直接双击运行即可node-v20.10.0-x64.msi
    在这里插入图片描述

2.2 安装Newman

  • 直接命令行输入以下命令即可:
npm install -g newman
C:\Windows\System32>npm install -g newman
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.added 118 packages, and audited 119 packages in 15s9 packages are looking for fundingrun `npm fund` for detailsfound 0 vulnerabilities
npm notice
npm notice New major version of npm available! 7.19.1 -> 10.2.4
npm notice Changelog: https://github.com/npm/cli/releases/tag/v10.2.4
npm notice Run npm install -g npm@10.2.4 to update!
  • 注意安装时要以管理员身份打开,不然会报错:
C:\Users\Administrator>npm install -g newman
npm ERR! code EPERM
npm ERR! syscall open
npm ERR! path C:\Program Files\nodejs\node_cache\_cacache\tmp\9c4058f4
npm ERR! errno EPERM
npm ERR! FetchError: Invalid response body while trying to fetch https://registry.npmjs.org/newman: EPERM: operation not permitted, open 'C:\Program Files\nodejs\node_cache\_cacache\tmp\9c4058f4'
npm ERR!     at C:\Program Files\nodejs\nod_global\node_modules\npm\node_modules\minipass-fetch\lib\body.js:162:15
npm ERR!     at async [nodeFromEdge] (C:\Program Files\nodejs\nod_global\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:936:19)
npm ERR!     at async [buildDepStep] (C:\Program Files\nodejs\nod_global\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:882:11)
npm ERR!     at async Arborist.buildIdealTree (C:\Program Files\nodejs\nod_global\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:218:7)
npm ERR!     at async Arborist.reify (C:\Program Files\nodejs\nod_global\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\reify.js:134:5)
npm ERR!     at async Install.install (C:\Program Files\nodejs\nod_
  • 验证Newman是否安装成功:
'newman' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
  • 问题排查:我们已经安装了node.js了,也已经安装了newman,其他都ok了。但还是不行查看node版本也是好的;
    在这里插入图片描述

2.2 解决Newman不是内部命令

  • 根据上边的提示,我们已经做好了很多工作,但是还是不行;
  • 这里需要配置node.js的一些环境变;
  • node.js的安装目录下新建两个文件夹如下node_globalnode_cache
    在这里插入图片描述
  • 打开系统环境变量,新增NODE_PATH变量:
NODE_PATH
D:\nodejs\node_modules

在这里插入图片描述

  • 在系统环境变量的path新增:%NODE_PATH%
    在这里插入图片描述
  • 打开用户环境变量,修改path中的npm路径为:D:\nodejs\node_global
    在这里插入图片描述
    在这里插入图片描述
  • 重启电脑、重启电脑、重启电脑(重要的事情说三遍)。
  • 验证newman是否安装成功:
newman -h
newman --version

在这里插入图片描述

3 Newman使用

3.1 Newman如何运行集合?

  • postman中将脚本导出,集合-右键-三个点-【Export】:
    在这里插入图片描述
  • 导出为JSON格式文件即可:
    在这里插入图片描述
  • 我们导出的文件为:test.postman_collection.json
  • 直接命令行执行以下命令运行脚本:
newman run test.postman_collection.json
  • 运行结果如下:
C:\Users\Administrator\Desktop>newman run test.postman_collection.json
newmantest→ zentaoPOST http://127.0.0.1/zentao/api.php/v1/tokens [201 Created, 1.29kB, 1997ms]√  状态码为201┌─────────────────────────┬─────────────────────┬─────────────────────┐
│                         │            executed │              failed │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│              iterations │                   10 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│                requests │                   10 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│            test-scripts │                   10 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│      prerequest-scripts │                   00 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│              assertions │                   10 │
├─────────────────────────┴─────────────────────┴─────────────────────┤
│ total run duration: 2.1s                                            │
├─────────────────────────────────────────────────────────────────────┤
│ total data received: 44B (approx)                                   │
├─────────────────────────────────────────────────────────────────────┤
│ average response time: 1997ms [min: 1997ms, max: 1997ms, s.d.: 0µs] │
└─────────────────────────────────────────────────────────────────────┘

在这里插入图片描述

3.2 如何查看帮助文档?

  • 使用以下命令即可:
newman -h
或
newman --help
C:\Users\Administrator\Desktop>newman -h
Usage: newman [options] [command]Options:-v, --version               output the version number-h, --help                  display help for commandCommands:run [options] <collection>  Initiate a Postman Collection run from a given URL or pathTo get available options for a command:newman <command> -hC:\Users\Administrator\Desktop>newman --help
Usage: newman [options] [command]Options:-v, --version               output the version number-h, --help                  display help for commandCommands:run [options] <collection>  Initiate a Postman Collection run from a given URL or pathTo get available options for a command:newman <command> -h

3.3 环境变量设置

  • 脚本文件和环境变量是两个文件;
  • 所以运行脚本的时候如果有环境变量,那么直接加-e--environment即可:
newman run 脚本文件 -e 环境变量文件

3.4 关于全局变量

  • 这个和环境变量类似,如果有全局变量,使用-g--globals即可;
newman run 脚本文件 -g 全局变量文件

3.5 数据源文件

  • Postman中可以设置迭代次数和数据源文件,而在Newman中使用的话,需要加-d--iteration-data参数指定数据源的路径:
newman run 脚本文件 -g 全局变量文件 -d 数据源文件
  • 迭代次数通过-n--iteration-count来确定。

3.6 如何导出变量

  • 直接在命令行加如下参数即可:
--export-environment
--export-globals
--export-collection

4 测试报告

  • Newman支持CLI、JSON、HTML、JUNIT等等;
  • 本文主要说下HTML格式的报告使用。

4.1 newman-reporter-html安装

  • newman-reporter-html插件安装:
npm install -g newman-reporter-html

在这里插入图片描述

4.2 newman-reporter-html使用

  • 使用方法:
命令说明
-r,json,junit表示指定生成HTML、JSON、XML格式形式的测试报告
--reporter-json-export xxx.json生成JSON格式的测试报告
--reporter-junit-export xxx.xml生成XML格式的测试报告
--reporter-html-export xxx.html生成HTML格式的测试报告
  • 生成的测试报告默认保存到当前目录下,如果报告名称为目录名,则保存到指定目录下;
  • 比如HTML报告:
newman run test.postman_collection.json \
-r html --reporter-html-export html_report.html

在这里插入图片描述

  • 比如XML格式报告:
newman run test.postman_collection.json \
-r junit --reporter-junit-export xml_report.xml

在这里插入图片描述

  • 比如JSON格式报告:
newman run test.postman_collection.json \
-r json --reporter-json-export json_report.json
{"collection": {"_": {"postman_id": "a1ee2193-7e02-4c50-892f-1e4d706a1132"},"item": [{"id": "393ea4b7-bfcf-4e3e-853d-e05a263435bf","name": "zentao","request": {"description": {"content": "禅道系统接口测试","type": "text/plain"},"url": {"protocol": "http","path": ["zentao","api.php","v1","tokens"],"host": ["127","0","0","1"],"query": [],"variable": []},"method": "POST","body": {"mode": "raw","raw": "{\"account\": \"admin\", \"password\": \"ZenTao123456\"}","options": {"raw": {"language": "json"}}}},"response": [],"event": [{"listen": "test","script": {"id": "63fb0da7-27ef-4569-87c6-81697169acf5","type": "text/javascript","exec": ["pm.test(\r","    \"状态码为201\",function(){\r","        pm.response.to.have.status(201);\r","    }\r",");"],"_lastExecutionId": "9d83ab07-5d8c-4170-bb4f-898dbd965e57"}}]}],"event": [],"variable": [],"info": {"_postman_id": "a1ee2193-7e02-4c50-892f-1e4d706a1132","name": "test","schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"}},"environment": {"id": "a4b8954c-a10e-4b54-80d0-bb003c56953e","values": []},"globals": {"id": "a084d77b-cbf5-4498-9770-200d6e0a4168","values": []},"run": {"stats": {"iterations": {"total": 1,"pending": 0,"failed": 0},"items": {"total": 1,"pending": 0,"failed": 0},"scripts": {"total": 1,"pending": 0,"failed": 0},"prerequests": {"total": 1,"pending": 0,"failed": 0},"requests": {"total": 1,"pending": 0,"failed": 0},"tests": {"total": 1,"pending": 0,"failed": 0},"assertions": {"total": 1,"pending": 0,"failed": 0},"testScripts": {"total": 1,"pending": 0,"failed": 0},"prerequestScripts": {"total": 0,"pending": 0,"failed": 0}},"timings": {"responseAverage": 154,"responseMin": 154,"responseMax": 154,"responseSd": 0,"dnsAverage": 0,"dnsMin": 0,"dnsMax": 0,"dnsSd": 0,"firstByteAverage": 0,"firstByteMin": 0,"firstByteMax": 0,"firstByteSd": 0,"started": 1700804595902,"completed": 1700804596169},"executions": [{"cursor": {"position": 0,"iteration": 0,"length": 1,"cycles": 1,"empty": false,"eof": false,"bof": true,"cr": false,"ref": "1d6d4e14-53d2-4ab6-8e78-87c67bad8bc9","httpRequestId": "b5949fe3-d241-4020-a10c-b4adcbef9bb1"},"item": {"id": "393ea4b7-bfcf-4e3e-853d-e05a263435bf","name": "zentao","request": {"description": {"content": "禅道系统接口测试","type": "text/plain"},"url": {"protocol": "http","path": ["zentao","api.php","v1","tokens"],"host": ["127","0","0","1"],"query": [],"variable": []},"method": "POST","body": {"mode": "raw","raw": "{\"account\": \"admin\", \"password\": \"ZenTao123456\"}","options": {"raw": {"language": "json"}}}},"response": [],"event": [{"listen": "test","script": {"id": "63fb0da7-27ef-4569-87c6-81697169acf5","type": "text/javascript","exec": ["pm.test(\r","    \"状态码为201\",function(){\r","        pm.response.to.have.status(201);\r","    }\r",");"],"_lastExecutionId": "9d83ab07-5d8c-4170-bb4f-898dbd965e57"}}]},"request": {"description": {"content": "禅道系统接口测试","type": "text/plain"},"url": {"protocol": "http","path": ["zentao","api.php","v1","tokens"],"host": ["127","0","0","1"],"query": [],"variable": []},"header": [{"key": "Content-Type","value": "application/json","system": true},{"key": "User-Agent","value": "PostmanRuntime/7.33.0","system": true},{"key": "Accept","value": "*/*","system": true},{"key": "Cache-Control","value": "no-cache","system": true},{"key": "Postman-Token","value": "4dd31771-a07b-42e8-b78a-ac244c4dca6c","system": true},{"key": "Host","value": "127.0.0.1","system": true},{"key": "Accept-Encoding","value": "gzip, deflate, br","system": true},{"key": "Connection","value": "keep-alive","system": true},{"key": "Content-Length","value": "48","system": true}],"method": "POST","body": {"mode": "raw","raw": "{\"account\": \"admin\", \"password\": \"ZenTao123456\"}","options": {"raw": {"language": "json"}}}},"response": {"id": "2a26af66-ad21-42d2-8b7a-b89cd7339a47","status": "Created","code": 201,"header": [{"key": "Date","value": "Fri, 24 Nov 2023 05:43:16 GMT"},{"key": "Server","value": "Apache"},{"key": "Set-Cookie","value": "zentaosid=9f0dab6ebbe1e65c99a8abb3c351d89a; path=/zentao/; HttpOnly"},{"key": "Set-Cookie","value": "lang=zh-cn; expires=Sun, 24-Dec-2023 05:43:16 GMT; Max-Age=2592000; path=/zentao/"},{"key": "Set-Cookie","value": "device=desktop; expires=Sun, 24-Dec-2023 05:43:16 GMT; Max-Age=2592000; path=/zentao/; HttpOnly"},{"key": "Set-Cookie","value": "theme=default; expires=Sun, 24-Dec-2023 05:43:16 GMT; Max-Age=2592000; path=/zentao/"},{"key": "Expires","value": "Thu, 19 Nov 1981 08:52:00 GMT"},{"key": "Cache-Control","value": "private"},{"key": "Pragma","value": "no-cache"},{"key": "X-Content-Type-Options","value": "nosniff"},{"key": "X-XSS-Protection","value": "1; mode=block"},{"key": "Strict-Transport-Security","value": "max-age=3600; includeSubDomains"},{"key": "Referrer-Policy","value": "no-referrer-when-downgrade"},{"key": "X-Permitted-Cross-Domain-Policies","value": "master-only"},{"key": "X-Download-Options","value": "noopen"},{"key": "Content-Security-Policy","value": "form-action 'self';connect-src 'self';"},{"key": "X-Frame-Options","value": "SAMEORIGIN"},{"key": "Access-Control-Allow-Origin","value": "*"},{"key": "Access-Control-Allow-Credentials","value": "true"},{"key": "Access-Control-Allow-Headers","value": "Origin,X-Requested-With,Content-Type,Accept,Authorization,Token,Referer,User-Agent"},{"key": "Access-Control-Allow-Methods","value": "GET,POST,PUT,DELETE,OPTIONS,PATCH"},{"key": "Content-Length","value": "44"},{"key": "Keep-Alive","value": "timeout=10, max=100"},{"key": "Connection","value": "Keep-Alive"},{"key": "Content-Type","value": "application/json"}],"stream": {"type": "Buffer","data": [123,34,116,111,107,101,110,34,58,34,57,102,48,100,97,98,54,101,98,98,101,49,101,54,53,99,57,57,97,56,97,98,98,51,99,51,53,49,100,56,57,97,34,125]},"cookie": [],"responseTime": 154,"responseSize": 44},"id": "393ea4b7-bfcf-4e3e-853d-e05a263435bf","assertions": [{"assertion": "状态码为201","skipped": false}]}],"transfers": {"responseTotal": 44},"failures": [],"error": null}
}
  • 以下是生成的几个报告:
    在这里插入图片描述

4.3 htmlextra安装

  • htmlextra主要实现比较高级的测试报告,需要进行安装:
npm install -g newman-reporter-htmlextra

在这里插入图片描述

4.4 htmlextra使用

  • 使用方法和newman-reporter-html基本一样;
  • 使用命令方法:
newman run test.postman_collection.json -r \
htmlextra --reporter-html-export html_report.html
  • 执行命令后会在当前目录或者指定目录生成一个newman文件夹,文件夹中保存着生成的文报告信息;
  • 测试报告样式如下:
    在这里插入图片描述

5 关于postman使用

  • 这个之前的文章已经介绍了,直接去浏览即可,这里不再赘述;
  • 大概思路就是使用postman生成接口数据,导出来后使用Newman运行和生成测试报告。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

麒麟linux离线安装dotnet core

1. 下载 dotnet core,以3.1为例 下载地址: 下载 .NET Core 3.1 (Linux、macOS 和 Windows) 查看linux cpu类型,然后根据类型下载 uname -m #结果是: aarch64 2. 放到指定目录,比如:/usr/dotnet 3. 解压dotnet-sdk-3.1.426-linux-arm64.tar.gz cd /usr/dotnet tar –zxvf a…

电脑如何禁止截屏

禁止电脑截屏是一项重要的安全措施&#xff0c;可以保护用户隐私和防止恶意软件的使用。以下是几种禁止电脑截屏的方法&#xff1a; 形式一&#xff1a; 一刀切&#xff0c;全部禁止截屏 可以在域之盾软件后&#xff0c;点击桌面管理&#xff0c;然后选择禁止截屏。就能禁止所…

opencv-使用 Haar 分类器进行面部检测

Haar 分类器是一种用于对象检测的方法&#xff0c;最常见的应用之一是面部检测。Haar 分类器基于Haar-like 特征&#xff0c;这些特征可以通过计算图像中的积分图来高效地计算。 在OpenCV中&#xff0c;Haar 分类器被广泛用于面部检测。以下是一个简单的使用OpenCV进行面部检测…

【开源】基于JAVA的衣物搭配系统

项目编号&#xff1a; S 016 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S016&#xff0c;文末获取源码。} 项目编号&#xff1a;S016&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 衣物档案模块2.2 衣物搭配模块2.3 衣…

无人机电力巡检系统运行流程全解读

随着电力行业体系不断完善&#xff0c;保障电网运营的安全成为至关重要的任务。传统的人工巡检方式在面对电力设备广泛分布和复杂工况时显得效率低下&#xff0c;为了解决这一难题&#xff0c;无人机电力巡检系统应运而生&#xff0c;以智能化的运行流程&#xff0c;为电网安全…

Comsol Multiphysics 6.2 for Mac建模仿真软件

COMSOL Multiphysics是一款多物理场仿真软件&#xff0c;旨在帮助工程师、科学家和研究人员解决各种复杂的工程和科学问题。该软件使用有限元分析方法&#xff0c;可以模拟和分析多个物理场的相互作用&#xff0c;包括结构力学、热传导、电磁场、流体力学和化学反应等。 COMSOL…

基于动量的梯度下降

丹尼尔林肯 (Daniel Lincoln)在Unsplash上拍摄的照片 一、说明 基于动量的梯度下降是一种梯度下降优化算法变体&#xff0c;它在更新规则中添加了动量项。动量项计算为过去梯度的移动平均值&#xff0c;过去梯度的权重由称为 Beta 的超参数控制。 这有助于解决与普通梯度下降相…

「树形」样式,数据关联超便捷丨三叠云

树形样式 路径 表单设计 >> 字段属性 功能简介 「表单关联」的数据列表样式支持「树形」样式功能&#xff0c;关联数据选择时通过「树形」的列表方式进行数据选择&#xff0c;提高生产效率。 使用场景&#xff1a; 可以通过树形列表样式展示部门、子部门、成员的树形…

氮化镓的晶体学湿式化学蚀刻法

引言 目前&#xff0c;大多数III族氮化物的加工都是通过干法等离子体蚀刻完成的。干法蚀刻有几个缺点&#xff0c;包括产生离子诱导损伤和难以获得激光器所需的光滑蚀刻侧壁。干法蚀刻产生的侧壁典型均方根(rms)粗糙度约为50纳米&#xff0c;虽然已经发现KOH基溶液可以蚀刻AlN…

Android开发从0开始(服务)

Android后台运行的解决方案&#xff0c;不需要交互&#xff0c;长期运行。 服务基础框架&#xff1a; public class MyService extends Service { public MyService() { } Override public IBinder onBind(Intent intent) { //activity与service交互&#xff08;需要继…

Jmeter基础和概念

JMeter 介绍&#xff1a; 一个非常优秀的开源的性能测试工具。 优点&#xff1a;你用着用着就会发现它的重多优点&#xff0c;当然不足点也会呈现出来。 从性能工具的原理划分&#xff1a; Jmeter工具和其他性能工具在原理上完全一致&#xff0c;工具包含4个部分&#xff1a; …

干货!ERP软件如何帮助企业实现信息化管理?

ERP即企业资源规划&#xff08;Enterprise Resource Planning&#xff09;系统&#xff0c;其核心是物料的追踪流转。而在物料追踪流转的基础上&#xff0c;又衍生出一系列各类资源计划的管理和追踪。因此ERP发展成为一款集成各类资源计划&#xff0c;也就是集成企业核心业务流…