web·þÎñÆ÷²âÊÔ¹¤¾ßGulu¡ª¡ªHTTP½Ó¿Ú²âÊÔ¹¤¾ß

ÉÏһƪ / ÏÂһƪ  2016-06-08 12:14:22

HTTP½Ó¿Ú²âÊÔ¹¤¾ß£¬¼òµ¥½²¾ÍÊǸù¾Ý²âÊÔÐèÇó£¬ÏòËù²âWeb Server·¢Æð¸÷ÖÖ¸÷ÑùµÄRequestÇëÇó£¬ÍêÕûµÄ»ñÈ¡Web Server·µ»ØResponseÏìÓ¦¡£²¢Äܹ»±ã½ÝµØ¶ÔResponseÏìÓ¦µÄ¸÷¸öÄÚÈݽøÐÐÑéÖ¤¡£

ÄÇôweb·þÎñÆ÷²âÊÔ¹¤¾ßGulu¡ª¡ªHTTP½Ó¿Ú²âÊÔ¹¤¾ßÊÇÈçºÎ×öµ½µÄÄØ£¿

±¾Æª²©ÎĽ«½áºÏ´úÂëʵÏÖ¼°UMLͼʾ´ÓÇëÇóÉèÖã¬ÏìÓ¦±£´æ£¬ÏìÓ¦ÑéÖ¤£¬3¸ö²¿·ÖÕ¹¿ª½éÉÜ¡£

 

¡¾×÷Õß¡¿¹«Ô¶/³ÂÕð£¨gongyuan.cz$taobao.com/ 100continue$sina.com£©

 

¡¾Ô´ÂëÏÂÔØ¡¿

githubµØÖ·£ºhttps://github.com/100Continue/Gulu--web-server-test-tools

 

¡¾À©Õ¹ÔĶÁ¡¿

 

web·þÎñÆ÷²âÊÔ¹¤¾ßGulu¡ª¡ª¼ò½é

 

¡¾¹¦ÄܽéÉÜ¡¿

1. ÇëÇóÉèÖù¦ÄÜ£º

Éè¼ÆÒªÇó£º

    a. ÓÉÓÚ²âÊÔÐèÇóǧ²îÍò±ð£¬Òò´ËÐèÒªÖ§³Ö¸÷ÖÖÇëÇó¹¹½¨ÐèÇó£¬Èç×ÔÓɶ¨ÖÆMethod¡¢Header£»ÇëÇóBodyÔÊÐí¸÷ÖÖÀàÐÍ¡ª¡ªform±íµ¥ÀàÐ͵ÄKey-Value¶Ô£»MultiPart·Ö¶ÎÉÏ´«µÄbodyÀàÐÍ£»ByteArrayÀàÐÍ¡¢StringÀàÐÍ¡¢InputStreamÀàÐÍ¡¢ÉÏ´«Êý¾ÝÀ´×Ô±¾µØÎļþµÈ£»Ö§³Ö°ó¶¨ÐéÄâIPµÄÇëÇóµÈµÈÐèÇó¡£

        b. Ö§³Ö´úÂë±àд±ã½ÝµÄÒªÇó£»

 

¾ßÌåʵÏÖ£º

    ½áºÏÉÏÊöÉè¼ÆÒªÇó¼°±£ÕÏ¿ÉÀ©Õ¹ÐÔ£¬¿Éά»¤ÐÔµÄÒªÇó¡£²ÉÓòßÂÔģʽ¡ª¡ª½«Êý¾ÝÓëËã·¨·Ö¿ªµÄ˼·ʵÏÖ¡£ÏêÇé²Î¼ûÏ·ùUMLͼ£º





 
 
 

        Request×÷ΪÊý¾Ý±£´æÀ࣬¸´ÔÓ±£´æRequestÇëÇóËùÉæ¼°µ½µÄËùÓÐÊý¾ÝÐÅÏ¢£»

       ×¢£º´Ó´úÂë±àд±ã½Ý½Ç¶È³ö·¢£¬HeaderÓëForm±íµ¥bodyÉèÖÃÖ§³ÖStringÀàÐÍ´«È룬ÈçHeaderÄ£°å£ºa:b$c:d$cookie:tt=xx;cc=pp£»±íʾHeaderΪ£ºa:b  c£ºd  cookie:tt=xx;cc=pp; Form±íµ¥BodyÄ£¿é£ºa=b$c=d$e=f£»±íʾForm±íµ¥BodyΪ£ºa=b c=d e=f£»

        RequestExecution×÷Ϊ¸÷ÖÖÇëÇóË㷨ʵÏÖÀ࣬×éºÏRequestµÄ¸÷ÖÖÊý¾ÝÏòWeb Server·¢ÆðÇëÇó£¬Ö§³Ö±¾µØIPµØÖ·¼°°ó¶¨ÐéÄâIPµØÖ·µÄÇëÇó·¢Æð¡£

       ×¢£º´Ó´úÂë±àд±ã½Ý½Ç¶È³ö·¢£¬¶¨Òå¶àÖÖdoRequest¡¢doRequestInIpBinding½Ó¿Ú£¬´Ó¶øʵÏÖÒ»ÐвâÊÔ´úÂë·¢Æð²âÊÔµÄÄ¿µÄ£»

        GetRequest¡¢DeleteRequest¡¢PutRequest¡¢PostRequest×÷Ϊ¾ßÌåÇëÇóÀàÐͶÔÏó£¬Í¨¹ý¸÷ÖÖµÄget*Method½Ó¿ÚʵÏÖ²»Í¬ÇëÇóÀàÐ͵ÄÇø·Ö£»

       ×¢£ºPutRequestÓëPostRequestÐèÒªÉèÖÃBody£¬Èç¹ûδÉèÖÃBody½«Å׳öException±¨´í£»

        BodyEntity½Ó¿Ú¶¨ÒåÁ˸÷ÖÖBodyÀàÐÍËùÐèÒªÖ§³ÖµÄ¹«¹²½Ó¿Ú£¬RequestÀàµÄBodyÊý¾ÝÖ±½Ó²ÉÓøýӿÚÀàÐͽøÐж¨Ò壬´Ó¶ø²»±ØÔÙÇø·Ö¸÷ÖÖ²»Í¬µÄBodyÀàÐÍ¡£

       ByteArrayBodyEntity¡¢FileBodyEntity¡¢InputStreamBodyEntity¡¢StringBodyEntity¡¢MultipartBodyEntity×÷Ϊ¾ßÌåBodyÀàÐ͵ÄʵÏÖÀà¡£

 

     ´úÂëÓ¦Óãº

        

Java´úÂë  ÊղشúÂë
  1. // ·¢Æð×Ô¶¨ÒåGetÇëÇó  
  2. new GetRequest().doRequest(url, headers);  
  3.   
  4. // ·¢Æð×Ô¶¨ÒåPostÇëÇóÉÏ´«Form±íµ¥Êý¾Ý²¢±£´æ³ÉResponse¶ÔÏó  
  5. Response response = new PostRequest().doRequest(url, headers, formBody);  
  6.   
  7. // ·¢Æð×Ô¶¨ÒåPutÇëÇóÉÏ´«±¾µØÎļþ²¢±£´æ³ÉResponse¶ÔÏó  
  8. FileBodyEntity fileBody = new FileBodyEntity(filePath, null);  
  9. Response response = new PutRequest().doRequest(url, headers, fileBody)  
  10.   
  11. // ·¢Æð×Ô¶¨ÒåPostÇëÇóÉÏ´«MultipartÊý¾Ý£¨°üº¬±¾µØÎļþ¡¢bytearray¡¢inputstreamÀàÐÍ£¬stringÀàÐÍ£©  
  12. StringBodyEntity stringBody = new StringBodyEntity("string body content"nullnull);  
  13.   
  14. FileBodyEntity fileBody = new FileBodyEntity(filePath, null);  
  15.   
  16. ByteArrayBodyEntity byteArrayBody = new ByteArrayBodyEntity("byte array body content".getBytes(), null);  
  17.   
  18. InputStream inputStream = new FileInputStream(new File(filePath));  
  19. InputStreamBodyEntity inputStreamBody = new InputStreamBodyEntity(inputStream, -2null);  
  20.   
  21. MultipartBodyEntity multipartBody = new MultipartBodyEntity(stringBody, fileBody);  
  22.   
  23. new PostRequest().doRequest(url, multipartBody);  

 

2. ÏìÓ¦±£´æ¹¦ÄÜ£º

    Éè¼ÆÒªÇó£º

     a. Äܹ»ÍêÕûµÄ±£´æWeb Server·µ»ØµÄËùÓÐÊý¾Ý£»

     b. Äܹ»**ã½ÝµÄÈ¡µÃËùÐèÒªResponse¸÷¸ö²¿·ÖµÄÊý¾Ý£»

 

    ¾ßÌåʵÏÖ£º

    »ùÓÚÉÏÊöÉè¼ÆÒªÇ󣬽«Web Server·µ»ØµÄËùÓÐÊý¾Ý±£´æµ½ResponseÀàÖУ¬²¢¶ÔÍâÌṩ²éѯ½Ó¿Ú£¬¾ßÌåʵÏÖ¼ûÏÂͼ£º




 
 

        Response×÷ΪWeb Server·µ»ØµÄÊý¾Ý±£´æÀ࣬½«×´Ì¬Â롢״̬Ìáʾ¡¢HeaderÊý¾ÝµÈ±£´æÓÚ¶ÔÏóÖУ¬¿¼Âǵ½ÏìӦͷÖпÉÄܳöÏÖδ°üº¬Content-length»òBody³¤¶È³¬¹ý×î´óIntegerÕâÁ½ÖÖÇé¿ö£¬Òò´Ë½«Body±£´æ³É±¾µØÎļþ£¬¶ÔÍâÌṩgetResponseBodyAsStream½Ó¿Ú½øÐзÃÎÊ¡£

       ×¢£º³ýÁËÏìӦͷδ°üº¬Content-length»òBody³¤¶È³¬¹ý×î´óIntegerÕâÁ½ÖÖÇé¿öÍ⣬ÏìÓ¦Body¾ù¿ÉÒÔͨ¹ýgetResponseBodyAsString½Ó¿Ú½øÐзÃÎÊ¡£

 

    ´úÂëÓ¦Óãº

        

Java´úÂë  ÊղشúÂë
  1. // ÇëÇóºó±£´æ³ÉResponse¶ÔÏó²¢»ñÈ¡StatusCode  
  2. Response response = new PostRequest().doRequest(url, headers, formBody);  
  3. int statusCode = response.getStatusCode();  
  4.             
  5. // ÇëÇóºóÖ±½Ó»ñÈ¡HeaderÊý×é  
  6. Header[] headers = new GetRequest().doRequest(url).getHeaders();  
  7.    
  8. // ÇëÇóºóÖ±½Ó»ñÈ¡ÏìÓ¦Body  
  9. String body = new GetRequest().doRequest(url).getResponseBodyAsString();  

 

 

 

3. ÏìÓ¦ÑéÖ¤¹¦ÄÜ£º

    Éè¼ÆÒªÇó£º

     a. Ö§³ÖËùÓÐResponse×é³É²¿·ÖµÄÆ¥ÅäÑéÖ¤£¬²¢ÇÒÖ§³ÖÈ«Æ¥Åä¼°°üº¬Æ¥ÅäÁ½ÖÖ·½Ê½£»

     b. Response BodyÑéÖ¤¾¡¿ÉÄܶàµÄÖ§³Ö¸÷ÖÖÀàÐÍ£¬ÈçStringÀàÐÍ¡¢Json¶ÔÏó¡¢±¾µØÎļþ¶Ô±ÈÑéÖ¤µÈ£»

          c. ´úÂë±àд±ã½Ý£¬ÀàËÆJunitµÄAssertµÄʹÓÃÏ°¹ß¼°Ñé֤ʧ°ÜºóÅ׳öException¼°Ê§°ÜÌáʾÐÅÏ¢£»

 

    ¾ßÌåʵÏÖ£º

    »ùÓÚÉÏÊöÉè¼ÆÐèÇó£¬ÏìÓ¦ÑéÖ¤¹¦ÄÜÉè¼ÆÓÐÒÔÏÂ3¸öÌص㣺

     a. ÎªÁ˾ßÓÐÀàËÆJunitµÄAssertµÄʹÓÃÏ°¹ß¡¢ÑéÖ¤Àà¾ùΪStatic¾²Ì¬À࣬Óû§¿ÉÖ±½ÓʹÓÃÀàÐ͵÷ÓÃÑéÖ¤½Ó¿Ú½øÐвâÊÔ£»²¢ÇÒÔÚTools¹¤¾ßÀàÖÐʵÏÖComparisonFailureHandleºÍFailedHandle£¬Ê¹µÃÑéÖ¤½á¹û¼°´íÎóÐÅÏ¢µÄÕ¹ÏÖÓëJunitµÄAssertÏàËÆ£¬·½±ãBug¶¨Î»ºÍµ÷ÊÔ£»

     b. ½«³ýBodyÍâµÄËùÓÐResponse×é³É²¿·ÖµÄÆ¥ÅäÑéÖ¤µ¥¶À·â×°ÔÚAssertBehaviorÖбãÓÚͳһά»¤ºÍÀ©Õ¹£»

     c. ¼Ì³ÐÓÚAssertBehaviorÀà·Ö±ðʵÏÖÁË3ÖÖ²»Í¬ÀàÐ͵ÄResponse BodyÑéÖ¤À࣬ÈçAssertStringBodyרÃÅÓ¦ÓÃÓÚResponse BodyÊÇStringÀàÐ͵ÄÑéÖ¤£»AssertJsonBodyרÃÅÓ¦ÓÃÓÚResponse BodyÊÇJson¶ÔÏóµÄÑéÖ¤£»AssertFileBodyרÃÅÓ¦ÓÃÓÚResponse BodyÐèÒªÓë±¾µØÎļþ½øÐжԱÈÑéÖ¤µÄ²âÊÔ£»

×¢£ºHeadersÑéÖ¤½öÑéÖ¤Óû§Ô¤ÆÚµÄKey Value£¬¶ÔResponse°üº¬µÄÆäËûHeader²»×öÑéÖ¤´¦Àí¡£²¢ÇÒÏàÓ¦µÄHeader ValueÑé֤Ϊ°üº¬Æ¥ÅäÑéÖ¤£»

 

    ÏêÇé²Î¼ûÏÂͼ£º




 
 

 

    ´úÂëÓ¦Óãº

    

Java´úÂë  ÊղشúÂë
  1. // ÇëÇóºó±£´æ³ÉResponse¶ÔÏó²¢ÑéÖ¤StatusCode  
  2. Response response = new PostRequest().doRequest(url, headers, formBody);  
  3. AssertStringBody.assertStatusCode(response, 200);  
  4. AssertJsonBody.assertStatusCode(response, 201); // Ñé֤ʧ°ÜÔòÖ±½ÓÅ׳öException¼°Junit AssertÀàÐ͵ÄÌáʾÐÅÏ¢£»  
  5.    
  6. // ÇëÇóºó±£´æ³ÉResponse¶ÔÏó²¢ÑéÖ¤HeadersÐÅÏ¢  
  7. Response response = new PostRequest().doRequest(url, headers, formBody);  
  8. AssertStringBody.assertHeaders (response, expectHeadersStr); // headers Ö§³ÖÉÏÊöRequestÀàÖÐÉè¼ÆµÄHeader String Ä£°å£»  
  9. AssertJsonBody. assertHeaders (response, expectHeaders); // headersÖ§³ÖHeader[]£»  
  10.    
  11. // ÇëÇóºó±£´æ³ÉResponse¶ÔÏó²¢ÑéÖ¤StringÀàÐ͵ÄBodyÐÅÏ¢  
  12. Response response = new PostRequest().doRequest(url, headers, formBody);  
  13. AssertStringBody.assertBodyEQ (response, expectResponseBody); //BodyÑéÖ¤·½Ê½ÎªÈ«Æ¥Å䷽ʽ£»  
  14. AssertStringBody. assertBody (response, expectResponseBody); // BodyÑéÖ¤·½Ê½Îª°üº¬Æ¥Å䷽ʽ£»  
  15.    
  16. // ÇëÇóºó±£´æ³ÉResponse¶ÔÏó²¢ÑéÖ¤JsonÀàÐ͵ÄBodyÐÅÏ¢  
  17. Response response = new PostRequest().doRequest(url, headers, formBody);  
  18. AssertJsonBody.assertBody (response, expectResponseJsonBodyStr); //BodyΪStringÀàÐ͵ÄJsonÊý¾Ý£»  
  19. AssertJsonBody. assertBody (response, expectResponseJsonBodyStr); // BodyΪJson¶ÔÏó£»  
  20.    
  21. // ÇëÇóºó±£´æ³ÉResponse¶ÔÏó²¢½«Response BodyÓë±¾µØÎļþ½øÐжԱÈÑéÖ¤ÀàÐÍ  
  22. Response response = new PostRequest().doRequest(url, headers, formBody);  
  23. AssertFileBody.assertBody (response, localFilePath, offset, size); // Ö§³ÖÓë±¾µØÎļþµÄ²¿·ÖÄÚÈݽøÐжԱÈÑéÖ¤  
  24. AssertFileBody. assertBody (response, localFilePath); // Ö»ÐèÉÏ´«±¾µØÎļþ·¾¶¼´¿É£»  
  25.    
  26. // ÇëÇóºó±£´æ³ÉResponse¶ÔÏó²¢Ö±½Ó¶Ô±ÈÁ½¸öResponse¶ÔÏó  
  27. Response response1 = new PostRequest().doRequest(url, headers, formBody);  
  28. Response response2 = new PostRequest().doRequest(url, headers, formBody);  
  29. AssertStringBody.assertResponse (response1, response2);  
  30. AssertJsonBody.assertResponse (response1, response2);  

 

 OK£¬web·þÎñÆ÷²âÊÔ¹¤¾ßGulu¡ª¡ªHTTP½Ó¿Ú²âÊÔ¹¤¾ß ½éÉÜÍê±Ï£¬±§Ç¸ÍÏÁËÕâô¾Ã²ÅÍê³ÉÎĵµ×«Ð´¡£


TAG: Web·þÎñÆ÷ ½Ó¿Ú web·þÎñÆ÷

 

ÆÀ·Ö£º0

ÎÒÀ´ËµÁ½¾ä

ÈÕÀú

« 2024-04-15  
ÈÕ Ò» ¶þ Èý ËÄ Îå Áù
 123456
78910111213
14151617181920
21222324252627
282930    

Êý¾Ýͳ¼Æ

  • ·ÃÎÊÁ¿: 10698
  • ÈÕÖ¾Êý: 7
  • ½¨Á¢Ê±¼ä: 2016-02-26
  • ¸üÐÂʱ¼ä: 2016-11-08

RSS¶©ÔÄ

Open Toolbar