postman+newman+nodejs

http://www.cnblogs.com/zanjiahaoge666/p/6388434.html

postman常用js生成变量

pre-request script

  1. 生成一个字符串作为随机用户名:
    postman.setEnvironmentVariable("random_username", ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4));
  2. 在发起请求之前获取当前的时间戳放在参数里:
    postman.setEnvironmentVariable("unixtime_now", Math.round(new Date().getTime()/1000));
  3. 生产随机数(0,1)postman.setEnvironmentVariable("random_cardno", Math.round(Math.random()*9999999));

tests

  1. 验证返回相应中的字段值:
      var jsonData = JSON.parse(responseBody);

tests["Check respose value err_code"] = jsonData.err_code === 0;

  1. 响应时间小于500ms

tests['Response time is less than 500ms'] = responseTime < 500;
3.验证响应报文的JSON格式:
  //最简单的格式验证
  var schema = {
    properties: {
      err_code: {type: 'int'},
      err_msg: {type: 'string'}
    }
  };
tests["Valid data schema"] = tv4.validate(responseBody, schema);

  1. 验证相应报文中是否包含某字段:

tests["body has status"] = jsonData.status = true;

  1. 先判断某字段是否存在,若存在则设置环境变量,若不存在则不设置:
      if (jsonData.status) {
        tests["body has status"] = true;
        postman.setEnvironmentVariable("status", jsonData.status);
      }
      else {
        tests["body has status"] = false;
      }

var jsonData = JSON.parse(responseBody);
var jsonpo=JSON.stringify(jsonData["data"]);
console.log(jsonpo);
srcpo=jsonData["srcFileName"];
console.log(srcpo);
newpo=jsonData["newFileName"];
console.log(newpo);
typepo=jsonData["type"];
console.log(typepo);
// console.log(jsonData["data"][0].GlobalBusinessUnit);
postman.setEnvironmentVariable('jsonpo',jsonpo);
postman.setEnvironmentVariable('newpo',newpo);
postman.setEnvironmentVariable('srcpo',srcpo);
postman.setEnvironmentVariable('typepo',typepo);


var jsonPO=jsonData["data"][0];
var GlobalBusinessUnit=jsonPO['GlobalBusinessUnit'];
var OrderNo=jsonPO['OrderNo'];
var Department=jsonPO['Department'];
var Year=jsonPO['Year'];
var PlanningSsn=jsonPO['PlanningSsn'];
var VendorCode=jsonPO['VendorCode'];
var Vendor=jsonPO['Vendor'];
var ManagementFactoryCode=jsonPO['ManagementFactoryCode'];
var ManagementFactory=jsonPO['ManagementFactory'];
var BranchFactoryCode=jsonPO['BranchFactoryCode'];
var BranchFactory=jsonPO['BranchFactory'];
var TotalNumberLines=jsonData["data"].length;

// var TotalQty=jsonData["data"][i]['OrderQty'];
var TotalQty = 0;
jsonData['data'].map(x => TotalQty += x['OrderQty']);
// var TotalQty1=TotalQty*range
// console.log(TotalQty1);
postman.setEnvironmentVariable('GlobalBusinessUnit',GlobalBusinessUnit);

http://www.jianshu.com/p/dd0db1b13cfc

1. 清除一个全局变量
     Clear a global variable
    对应脚本:
    postman.clearGlobalVariable("variable_key");
    参数:需要清除的变量的key

2.清除一个环境变量
    Clear an environment variable
    对应脚本:
    postman.clearEnvironmentVariable("variable_key");
    参数:需要清除的环境变量的key

3.response包含内容
    Response body:Contains string
    对应脚本:
    tests["Body matches string"] =responseBody.has("string_you_want_to_search");
    参数:预期内容

4.将xml格式的response转换成son格式
    Response body:Convert XML body to a JSON Object
    对应脚本:
    var jsonObject = xml2Json(responseBody);
    参数:(默认不需要设置参数,为接口的response)需要转换的xml

5.response等于预期内容
    Response body:Is equal to a string
    对应脚本:
    tests["Body is correct"] = responseBody === "response_body_string";
    参数:预期response

6.json解析key的值进行校验
    Response body:JSON value check
    对应脚本:
    tests["Args key contains argument passed as url parameter"] = 'test' in responseJSON.args
    参数:test替换被测的值,args替换被测的key

7.检查response的header信息是否有被测字段
    Response headers:Content-Type header check
    对应脚本:
    tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");
    参数:预期header

8.响应时间判断
    Response time is less than 200ms
    对应脚本:
    tests["Response time is less than 200ms"] = responseTime < 200;
    参数:响应时间

9.设置全局变量
      Set an global variable
      对应脚本:
      postman.setGlobalVariable("variable_key", "variable_value");
      参数:全局变量的键值

10.设置环境变量
      Set an environment variable
      对应脚本:
      postman.setEnvironmentVariable("variable_key", "variable_value");
      参数:环境变量的键值

11.判断状态码
      Status code:Code is 200
      对应脚本:
      tests["Status code is 200"] = responseCode.code != 400;
      参数:状态码

12.检查code name 是否包含内容
      Status code:Code name has string
      对应脚本:
      tests["Status code name has string"] = responseCode.name.has("Created");
      参数:预期code name包含字符串

13.成功的post请求
      Status code:Successful POST request
      对应脚本:
      tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;

14.微小验证器
       Use Tiny Validator for JSON data            
       对应脚本: 
        var schema = {
         "items": {
         "type": "boolean"
             }
         };
        var data1 = [true, false];
        var data2 = [true, 123];
        console.log(tv4.error);
        tests["Valid Data1"] = tv4.validate(data1, schema);
        tests["Valid Data2"] = tv4.validate(data2, schema);
        参数:可以修改items里面的键值对来对应验证json的参数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,797评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,179评论 3 414
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 175,628评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,642评论 1 309
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,444评论 6 405
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,948评论 1 321
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,040评论 3 440
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,185评论 0 287
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,717评论 1 333
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,602评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,794评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,316评论 5 358
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,045评论 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,418评论 0 26
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,671评论 1 281
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,414评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,750评论 2 370

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,779评论 18 139
  • Postman用法简介-Http请求模拟工具 在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,...
    奥利奥龙卷风阅读 4,230评论 2 9
  • 试用期第三周,我好像比做在我周边的,朝夕相处的,一同入职的新人早一段时间进项目。刚开始进入公司,我的组长让我尝试的...
    angleLillian阅读 168评论 0 0
  • 在血液里睡去 文、臧贵臣 因落叶 而读懂了秋意 因摇曳 而明白了秋凉 在温度的数字里 充斥着阴冷 身体里流淌着冷血...
    宁古塔诗人网阅读 243评论 0 2
  • 思墨,好听的名字。是将思念墨成诗句,还是念想如墨般芳香铿锵?你把今天的播报也设成黑白色调,真的很符合你的名字呢!亲...
    气球精灵阅读 238评论 0 1