网站开发和编程有什么区别,wordpress显示用户自定义,网页设计商品页面制作,seo关键词排名软件流量词『接口测试干货』| NewmanPostman接口自动化测试完整过程 1 Newman简介2 如何安装Newman#xff1f;2.1 安装NodeJs2.2 安装Newman2.2 解决Newman不是内部命令 3 Newman使用3.1 Newman如何运行集合#xff1f;3.2 如何查看帮助文档#xff1f;3.3 环境变量设置3.4 关于全局变… 『接口测试干货』| NewmanPostman接口自动化测试完整过程 1 Newman简介2 如何安装Newman2.1 安装NodeJs2.2 安装Newman2.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简介
Newman是Postman的一个扩展库NodeJs库NewmanPostman可完成接口自动化测试工作Postman导出的JSON格式文件可通过Newman的命令行执行因为Postman运行后只有概要结果没有像其他自动化测试框架那么完美漂亮的测试报告样式所以引入了NewmanNewman可快速完成集合的运行构造自动化以及持续集成工作。
2 如何安装Newman
2.1 安装NodeJs
下载地址NodeJs下载后直接双击运行即可node-v20.10.0-x64.msi
2.2 安装Newman
直接命令行输入以下命令即可
npm install -g newmanC:\Windows\System32npm install -g newman
npm WARN deprecated har-validator5.1.5: this library is no longer supported
npm WARN deprecated uuid3.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 npm10.2.4 to update!注意安装时要以管理员身份打开不然会报错
C:\Users\Administratornpm 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_global和node_cache 打开系统环境变量新增NODE_PATH变量
NODE_PATH
D:\nodejs\node_modules在系统环境变量的path新增%NODE_PATH% 打开用户环境变量修改path中的npm路径为D:\nodejs\node_global 重启电脑、重启电脑、重启电脑重要的事情说三遍。验证newman是否安装成功
newman -h
newman --version3 Newman使用
3.1 Newman如何运行集合
从postman中将脚本导出集合-右键-三个点-【Export】 导出为JSON格式文件即可 我们导出的文件为test.postman_collection.json直接命令行执行以下命令运行脚本
newman run test.postman_collection.json运行结果如下
C:\Users\Administrator\Desktopnewman 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 │ 1 │ 0 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│ requests │ 1 │ 0 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│ test-scripts │ 1 │ 0 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│ prerequest-scripts │ 0 │ 0 │
├─────────────────────────┼─────────────────────┼─────────────────────┤
│ assertions │ 1 │ 0 │
├─────────────────────────┴─────────────────────┴─────────────────────┤
│ 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 --helpC:\Users\Administrator\Desktopnewman -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\Desktopnewman --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 -h3.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-collection4 测试报告
Newman支持CLI、JSON、HTML、JUNIT等等本文主要说下HTML格式的报告使用。
4.1 newman-reporter-html安装
newman-reporter-html插件安装
npm install -g newman-reporter-html4.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: zentaosid9f0dab6ebbe1e65c99a8abb3c351d89a; path/zentao/; HttpOnly},{key: Set-Cookie,value: langzh-cn; expiresSun, 24-Dec-2023 05:43:16 GMT; Max-Age2592000; path/zentao/},{key: Set-Cookie,value: devicedesktop; expiresSun, 24-Dec-2023 05:43:16 GMT; Max-Age2592000; path/zentao/; HttpOnly},{key: Set-Cookie,value: themedefault; expiresSun, 24-Dec-2023 05:43:16 GMT; Max-Age2592000; 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; modeblock},{key: Strict-Transport-Security,value: max-age3600; 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: timeout10, max100},{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-htmlextra4.4 htmlextra使用
使用方法和newman-reporter-html基本一样使用命令方法
newman run test.postman_collection.json -r \
htmlextra --reporter-html-export html_report.html执行命令后会在当前目录或者指定目录生成一个newman文件夹文件夹中保存着生成的文报告信息测试报告样式如下
5 关于postman使用
这个之前的文章已经介绍了直接去浏览即可这里不再赘述大概思路就是使用postman生成接口数据导出来后使用Newman运行和生成测试报告。