Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓƵ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
»ùÓÚPostmanµÄAPI×Ô¶¯»¯²âÊÔ
 
×÷ÕߣºÎâÑåÐÀ À´Ô´£º÷È×å¿Æ¼¼¿ª·¢ÍŶӠ·¢²¼ÓÚ£º 2016-9-12
  3610  次浏览      19
 

1¡¢°²×°

Á½ÖÖ°²×°·½Ê½£¬ÎÒÈÈÖÔÓÚÒÔchrome²å¼þÐÎʽ°²×°

Chrome²å¼þ

Mac App

2¡¢·¢ËÍÇëÇó

Postman×î»ù´¡µÄ¹¦ÄܾÍÊÇ·¢ËÍhttpÇëÇó£¬Ö§³ÖGET/PUT/POST/DELETE£¬»¹ÓкܶàÎÒ²»ÈÏʶµÄhttp·½·¨¡£

ͨ¹ýÌîдURL¡¢header¡¢bodyµÈ¾Í¿ÉÒÔ·¢ËÍÒ»¸öÇëÇó£¬Õâ¶ÔÓÚÎÒÃÇƽʱ×öһЩ¼òµ¥µÄ²âÊÔÊǹ»Óõġ£

Èç¹ûÄãµÄÓ¦ÓÃÐèÒªÓõ½µÇ¼ÑéÖ¤£¬¿ÉÒÔͨ¹ýÌîдAuthorizationÒÔÂú×ãÄãµÄÐèÇó¡£

ÁíÍâÒ²¿ÉÒÔʹÓÃChromeä¯ÀÀÆ÷ÒѾ­µÇ¼µÄcookie£¬Í¬²½ä¯ÀÀÆ÷µÄcookieÐèÒª°²×°ÁíÒ»¸ö²å¼þInterceptor£¨À¹½Ø»ú£©¡£Ëü¿ÉÒÔÔÚÄã·¢ËÍÇëÇóʱ°ïÄ㽫ÒѾ­´æÔÚÓÚä¯ÀÀÆ÷µÄÊý¾ÝËæheaderÇëÇó£¬ÁíÍâËü¿ÉÒÔ½«ä¯ÀÀÆ÷µÄÇëÇóдµ½postmanµÄÀúÊ·ÖУ¨ÐèÒª¿ªÆô¡°Request Capture¡±£©¡£

3¡¢¼¯ºÏ

ÿ´ÎÅäÖÃÍêÒ»¸öÇëÇ󶼿ÉÒÔ±£´æµ½Ò»¸ö¼¯ºÏÖУ¬Èç´ËÒ»À´£¬Ï´βâÊÔ¿ÉÒÔÖ±½Ó´Ó¼¯ºÏÖÐÕÒµ½ÄãÒªÖ´ÐеIJâÊÔ¡£

¼¯ºÏ²»µ¥µ¥Ö»ÓзÖÀàºÍ´æ´¢¹¦ÄÜ£¬PostmanÖ§³ÖÒ»¼üÔËÐÐÕû¸ö¼¯ºÏÄڵIJâÊÔ¡£

ÎÒÃÇ¿ÉÒÔ°ÑÒ»¸öÇëÇóµ±×öÒ»¸öTest Case, ÄÇô¼¯ºÏ¾ÍÊÇÒ»¸öTest Suite¡£

ÿ¸ö¼¯ºÏ¶¼¶ÔÓ¦Ò»¸öURL£¬¿ÉÒÔͨ¹ýShare°´Å¥»ñµÃÄãµÄ¼¯ºÏURL£¬Õâ¸öURL¿ÉÒÔÓÃÓÚ·ÖÏí¸øÄãµÄ¶ÓÓÑ£¬»òÕßÓÃÓÚNewmanÖ´ÐС£

NewmanÊÇPostmanµÄÒ»¸öÃüÁîÐй¤¾ß£¬¿ÉÒÔÈÃAPI²âÊÔ¼ÓÈëµ½ÄãµÄ³ÖÐø¼¯³ÉÈÎÎñÉÏ¡£

4¡¢»·¾³±äÁ¿

µ±×öAPI²âÊÔʱ£¬Äã¿ÉÄܾ­³£ÐèÒªÇл»²»Í¬µÄÉèÖᣱÈÈ磬¿ª·¢»·¾³µÄAPIÉèÖᢲâÊÔ»·¾³ºÍ²úÆ·»·¾³µÄAPIÉèÖã¬Äã¿ÉÄÜÐèÒªÔÚ²»Í¬µÄ²âÊÔ»·¾³ÏÂʹÓò»Í¬µÄÅäÖá£Îª´ËPostmanÌṩÁË»·¾³±äÁ¿£¬ÕâÑùÄã¾Í¿ÉÒÔͨ¹ýÐ޸Ļ·¾³±äÁ¿£¬¶ø²»ÐèÐÞ¸ÄÇëÇóÁË¡£

Äã¿ÉÒÔͨ¹ýÓÒÉϽǵÄÏÂÀ­²Ëµ¥Ñ¡Ôñ»·¾³£¬¿ÉÒÔͨ¹ýµã»÷ÓÒ²àµÄСÑÛ¾¦À´²é¿´µ±Ç°»·¾³±äÁ¿¡£

5¡¢API²âÊÔ

Postman²âÊÔɳÏäÊÇÒ»¸öJavaScriptÖ´Ðл·¾³£¬¿ÉÒÔͨ¹ýJS½Å±¾À´±àдpre-requistºÍ²âÊԽű¾¡£pre-requist¿ÉÒÔÓÃÀ´ÐÞ¸ÄһЩĬÈϲÎÊý¡£

PostmanɳÏ伯³ÉÁ˼¸¸ö¹¤¾ß¿â£¬±ÈÈçlodash¡¢SugarJs¡¢tv4£¬»¹ÓÐһЩÄÚÖú¯ÊýÈçxml2JSON..

tv4ÓÃÓÚÑéÖ¤JSONÊý¾Ý£¬Í¨¹ý±àдJSON SchemaÀ´ÑéÖ¤£¬JSON SchemaµÄÓï·¨Çë²ÎÕÕÕâÀï

²âÊÔÓï·¨£º

// description Ϊ¸Ã²âÊÔµÄÃèÊö   
// value Ö»ÒªBoolean(value)²»µÈÓÚfalse£¬Õâ¸ö²âÊÔ¾ÍÊÇPASS
tests[description] = value

// example
tests["Status code is 200"] = responseCode.code === 200;

ÎÒÃÇÒÔgithub statusµÄ½Ó¿ÚΪÀý£º

url: https://status.github.com/api/status.json

tests["Status code is 200"] = responseCode.code === 200;   

// validate json schema
var schema = {
properties: {
status: {type: 'string'},
last_updated: {type: 'string'}
}
};

tests["Valid data schema"] = tv4.validate(responseBody, schema);

// check status
var jsonData = JSON.parse(responseBody);
tests["Github status is good"] = jsonData.status === 'good';

ÔËÐнá¹û£º

ʾÀý

ÊÜ http://httpbin.org/ Æô·¢£¬PostmanÒ²ÌṩÁËÒ»Ì×ÈëÃŵÄAPI http://dump.getpostman.com/ £¬½ÓÏÂÀ´ÎÒÃǽ«ÀûÓÃÕâÌ×API×öÍêÕûµÄ²âÊÔ¡£

1¡¢´´½¨Ò»¸ö»·¾³±äÁ¿

Ìí¼ÓÒ»¸öURL±äÁ¿£¬ÎÒÃÇ»áÔÚºóÐøʹÓÃ

2¡¢ÇëÇóÒ»¸öÐÂÓû§

ÎÒÃÇÐèҪͨ¹ý·¢ËÍÒ»¸öPOSTÇëÇóµ½{{url}}/blog/users/À´´´½¨Ò»¸öÓû§£¬²¢ÐèÒª¸½¼ÓÏÂÃæµÄ²ÎÊýµ½ÇëÇóbodyÖУº

×¢£º¼ÇµÃ½«»·¾³±äÁ¿Çл»µ½dump.getpostman.com£¬ÕâÑùÎÒÃDzÅÄÜ»ñÈ¡µ½{{url}}±äÁ¿

{  
"username": "abhinav",
"password": "abc"
}

Õâ¸ö½Ó¿ÚÏÖÔÚºÃÏñ²»Ö§³Ö´´½¨Óû§ÁË£¬ÎÒÃǼÙÉèÒѾ­´´½¨³É¹¦ÁË£¬ÒòΪÕâ²»Ó°ÏìÎÒÃǺóÐø²Ù×÷

3¡¢»ñÈ¡Óû§µÄToken

TokenÓÃÓÚÊÚÓèÖÕ¶ËÇëÇóºÍ·ÃÎÊȨÏ޵ġ£ÎÒÃÇ¿ÉÒÔͨ¹ýPOSTÓû§ÃûºÍÃÜÂëÇëÇó {{url}}/blog/users/tokens/ À´»ñÈ¡Óû§µÄToken£¬Õâ¸öToken½«ÓÃÓÚÆäËûÇëÇóÖС£

{   
"username": "abhinav",
"password": "abc"
}

4¡¢¸ñʽ»¯JSON

ÎÒÃÇÐèÒª´ÓÉÏÃæµÄÇëÇó½á¹ûÖлñÈ¡µ½Óû§TokenºÍÓû§ID£¬²¢½«ÕâÁ½¸öÖµ±£´æµ½»·¾³±äÁ¿ÖУ¬ÒÔ¹©ºóÐøʹÓ᣽«ÏÂÃæÕâ¶Î´úÂëÌí¼Óµ½²âÊԱ༭Æ÷ÖУº

var data = JSON.parse(responseBody);   

if (data.token) {
tests["Body has token"] = true;
postman.setEnvironmentVariable("user_id", data.user_id);
postman.setEnvironmentVariable("token", data.token);
}
else {
tests["Body has token"] = false;
}

5¡¢´´½¨Ò»ÆªÎÄÕÂ

Èç¹ûÉÏÃæµÄ²âÊÔÊÇÔÚÖ÷´°¿Ú»òÕß¼¯ºÏÔËÐÐÆ÷ÖÐÖ´ÐУ¬ÄÇô user_id ºÍ token »á×Ô¶¯µØ±»Ìí¼Óµ½»·¾³±äÁ¿ÖС£

ΪÁË´´½¨Ò»ÆªÎÄÕ£¬ÎÒÃÇÐèÒª·¢ËÍÒ»¸öPOSTÇëÇóµ½ {{url}}/blog/posts £¬²¢½« user_id ºÍ token Ìí¼ÓÔÚURL²ÎÊýÖС£POSTµÄÇëÇóBodyÈçÏ£º

{   
"post": "This is a new post"
}

6¡¢¼ì²é·µ»ØÊý¾Ý

Èç¹ûÉÏÊöµÄÇëÇó³É¹¦µÄ»°½«·µ»ØÒ»¸ö´øÓÐpost_idµÄJSON¡£ÎÒÃǽ«ÔÚÕâÀïÑéÖ¤ÊÇ·ñ´´½¨ÎÄÕ³ɹ¦£¬²¢ÇÒ½«ÎÄÕÂID±£´æµ½»·¾³±äÁ¿¡£½«ÏÂÃæÕâ¶Î´úÂëÌí¼Óµ½²âÊԱ༭Æ÷ÖУº

var data = JSON.parse(responseBody);   

if (data.post_id) {
tests["post_id found"] = true;

postman.setEnvironmentVariable("post_id", data.post_id);
}
else {
tests["post_id found"] = false;
}

7¡¢»ñȡһƪÎÄÕ²¢ÑéÖ¤JSON

ÎÒÃǽ«Í¨¹ýÉÏÃæ·µ»ØµÄÎÄÕÂIDÀ´»ñÈ¡ÎÒÃÇ´´½¨µÄÎÄÕ¡£ÕâÀïÎÒÃǽ«Óõ½PostmanÄÚÖÃµÄ tv4 JSON ÑéÖ¤Æ÷À´¼ì²é·þÎñÆ÷ÏìÓ¦µÄJSON¡£

´´½¨Ò»¸öGETÇëÇóµ½ {{url}}/blog/posts/{{post_id}}£¬²¢½«ÏÂÃæÕâ¶Î´úÂëÌí¼Óµ½²âÊԱ༭Æ÷ÖУº

var schema = {   
"type": "object",
"properties": {
"content": "string",
"created_at": "integer",
"id": "integer"
},
"required": ["content", "created_at", "id"]
};

var data = JSON.parse(responseBody);

var result = tv4.validateResult(data, schema);

tests["Valid schema"] = result.valid;

8¡¢Ò»¼üÔËÐÐÓë·ÖÏí¼¯ºÏ

ÎÒÃǽ«ÉÏÊöÿһ¸ö²âÊÔ±£´æµ½PostmanTestµÄ¼¯ºÏÖУ¬ÕâÑùÎÒÃǾͿÉÒÔÔÚÈκÎʱºò´ò¿ªºÍÔËÐÐÄãÏëÒªµÄ²âÊÔ£¬²¢ÇÒ¿ÉÒÔÒ»¼üÔËÐÐËùÓУ¬»òÕß½«¼¯ºÏ·ÖÏí¸øÄãµÄС»ï°é£¬Ò²¿ÉÒÔ»ñȡǶÈëʽ´úÂ루ÈçÏÂÃæµÄ°´Å¥£©¡£

   
3610 ´Îä¯ÀÀ       19
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù
×îпγ̼ƻ®
ÐÅÏ¢¼Ü¹¹½¨Ä££¨»ùÓÚUML+EA£©3-21[±±¾©]
Èí¼þ¼Ü¹¹Éè¼Æʦ 3-21[±±¾©]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 3-25[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼Æ 4-11[±±¾©]
SysMLºÍEAϵͳÉè¼ÆÓ뽨ģ 4-22[±±¾©]
DoDAF¹æ·¶¡¢Ä£ÐÍÓëʵÀý 5-23[±±¾©]

LoadRunnerÐÔÄܲâÊÔ»ù´¡
Èí¼þ²âÊÔ½á¹û·ÖÎöºÍÖÊÁ¿±¨¸æ
ÃæÏò¶ÔÏóÈí¼þ²âÊÔ¼¼ÊõÑо¿
Éè¼Æ²âÊÔÓÃÀýµÄËÄÌõÔ­Ôò
¹¦ÄܲâÊÔÖйÊÕÏÄ£Ð͵Ľ¨Á¢
ÐÔÄܲâÊÔ×ÛÊö


ÐÔÄܲâÊÔ·½·¨Óë¼¼Êõ
²âÊÔ¹ý³ÌÓëÍŶӹÜÀí
LoadRunner½øÐÐÐÔÄܲâÊÔ
WEBÓ¦ÓõÄÈí¼þ²âÊÔ
ÊÖ»úÈí¼þ²âÊÔ
°×ºÐ²âÊÔ·½·¨Óë¼¼Êõ


ij²©²ÊÐÐÒµ Êý¾Ý¿â×Ô¶¯»¯²âÊÔ
IT·þÎñÉÌ Web°²È«²âÊÔ
IT·þÎñÉÌ ×Ô¶¯»¯²âÊÔ¿ò¼Ü
º£º½¹É·Ý µ¥Ôª²âÊÔ¡¢Öع¹
²âÊÔÐèÇó·ÖÎöÓë²âÊÔÓÃÀý·ÖÎö
»¥ÁªÍøweb²âÊÔ·½·¨Óëʵ¼ù
»ùÓÚSeleniumµÄWeb×Ô¶¯»¯²âÊÔ