当前位置:   article > 正文

postman 详细使用 (6):自动化测试 API newman 的基本使用_掌握newman自动化基础

掌握newman自动化基础

postman 自动化测试 API newman 的基本使用

 

postman 开放了应用程序中常用的 API -- newman 供外部程序调用,newman 基于 node.js ,除了可以直接在命令行中直接运行,还支持作为 module 在 node 代码中调用,newman 项目地址:https://www.npmjs.com/package/newman

 

newman 可以直接调用 postman 导出的 collection json 文件,也可以自己手动编写 collection json 文件,或者在 node newman 模块中通过对象的方式设定,同时 newman 对于 collection 执行的各个时间点提供了 start、beforeItem、beforePreerquest、beforeRequest、beforeTest、done 等回调函数,可以在 node 程序中十分方便地对 collection 的执行生命周期进行干预;

  1. # 通过 npm 下载 newman
  2. npm install -g newman
  3. # 直接运行 postman collection
  4. newman run ./demo-collection.json

以下以一个简单的示例,来演示 node 中 newman api 的使用,详细的使用说明请参考官方文档:https://www.npmjs.com/package/newman

 

测试场景描述

假设我需要对接口 http://localhost:8080/project/getHolidayByTimes.do 接口进行测试,该接口返回请求参数 startTime,stopTime 之间的假期时间,响应的 json 类似如下:

我的测试数据储存在本地数据库 postman_test 的数据表 holiday_case 中,如下:

 

示例代码

代码结构:

我的 collection 已经事先在 postman 中编辑好导出了,collection 只包含一个 item,item 中包含断言脚本;

getHolidayByTimes-test-collection.json

  1. {
  2. "info": {
  3. "_postman_id": "fd24328a-4dd3-4d65-985f-40cb44c44341",
  4. "name": "getHolidayByTimes-test",
  5. "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  6. },
  7. "item": [{
  8. "_postman_id": "eee4e430-0b0e-47de-8574-a4d763202ff9",
  9. "name": "getHolidayByTimes.do",
  10. "event": [{
  11. "listen": "test",
  12. "script": {
  13. "id": "0d80d11b-7920-47b6-88b8-6770c38bd060",
  14. "type": "text/javascript",
  15. "exec": [
  16. "var jsonData = JSON.parse(responseBody)",
  17. "",
  18. "var result = jsonData.code == data.code ;",
  19. "if(data.code == \"0\"){",
  20. " result = result && (jsonData.data.holidays == data.assertTime)",
  21. "}",
  22. "",
  23. "tests[data.comment] = result; ",
  24. "",
  25. ""
  26. ]
  27. }
  28. }],
  29. "request": {
  30. "method": "POST",
  31. "body": {
  32. "mode": "urlencoded",
  33. "urlencoded": [{
  34. "key": "startTime",
  35. "value": "{{startTime}}",
  36. "type": "text"
  37. },
  38. {
  39. "key": "stopTime",
  40. "value": "{{stopTime}}",
  41. "type": "text"
  42. }
  43. ]
  44. },
  45. "url": "{{host}}/getHolidayByTimes.do"
  46. },
  47. "response": []
  48. }]
  49. }

node 脚本代码:

testGetHolidayByTimes.js

  1. /**
  2. * 测试 newman API
  3. * @author yulinying 2018/8/2
  4. * @description 测试 wxqyh-ask-PortalAskCtl # getHolidayByTimes 接口,从本地数据库中读取测试数据;
  5. */
  6. var newman = require("newman");
  7. var mysql = require("mysql");
  8. //从本地数据库中获取测试数据
  9. var connection = mysql.createConnection({
  10. host: "localhost",
  11. user: "root",
  12. password: "mysql1994assad",
  13. database: "postman_test"
  14. });
  15. connection.connect();
  16. connection.query("select startTime,stopTime,code,assertTime,comment from holiday_case", function(error, results) {
  17. if (error) throw error;
  18. var data = convertResultToData(results);
  19. //运行 collectin 测试
  20. newman.run({
  21. collection: require("./getHolidayByTimes-test-collection.json"),
  22. reporters: ["cli", "html"],
  23. iterationData: data,
  24. environment: {
  25. "values": [{
  26. "key": "host",
  27. "value": "http://localhost:8080/holyshit",
  28. "type": "text",
  29. "enabled": true
  30. }]
  31. }
  32. });
  33. });
  34. connection.end();
  35. //转化 node-mysql results 为 postman collection 迭代数据格式
  36. function convertResultToData(results) {
  37. var data = new Array();
  38. for (i = 0; i < results.length; i++) {
  39. var row = results[i];
  40. var dataRow = new Object();
  41. dataRow.startTime = row.startTime;
  42. dataRow.stopTime = row.stopTime;
  43. dataRow.code = row.code;
  44. dataRow.assertTime = row.assertTime;
  45. dataRow.comment = row.comment;
  46. data.push(dataRow);
  47. }
  48. return data;
  49. }

 

运行结果

我在代码中设置了 newman 的报告方式为控制台和html,他们的结果分别如下,可以看到,newman 的测试报告方式还是十分舒服的,已经很接近 postman 的 Runner 测试界面,可以十分清楚看到测试用例通过和不通过的数量报告;

控制台:

html 页面:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/141762
推荐阅读
相关标签
  

闽ICP备14008679号