当前位置:首页 > PHP教程 > php应用 > 列表

使用phpunit进行接口自动化测试

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-05 16:45:25 浏览: 评论:0 

下面小编就为大家分享一篇使用phpunit进行接口自动化测试,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧

年初一个偶然的机会接触到了phpunit,一个用PHP编程语言开发的开源软件,也是一个单元测试框架,有效利用的话可以大大提高接口遍历的效率,废话不多说,直接干货。

1.安装

在php的目录下

pear channel-discover pear;

pear install phpunit/PHPUnit

2.配置

首先新建一个lib文件夹存放的配置文件,然后再新建一个transfer.php的文件

  1. <?php 
  2. function do_Post($url$fields$extraheader = array()){ 
  3.   $ch = curl_init(); 
  4.   curl_setopt($ch, CURLOPT_URL, $url); 
  5.   curl_setopt($ch, CURLOPT_POST, true); 
  6.   curl_setopt($ch, CURLOPT_POSTFIELDS, $fields ); 
  7.   curl_setopt($ch, CURLOPT_HTTPHEADER, $extraheader); 
  8.   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 获取数据返回 
  9.   $output = curl_exec($ch); 
  10.   curl_close($ch); 
  11.   return $output
  12. function do_Get($url$extraheader = array()){ 
  13.   $ch = curl_init(); 
  14.   curl_setopt($ch, CURLOPT_URL, $url); 
  15.   curl_setopt($ch, CURLOPT_HTTPHEADER, $extraheader); 
  16.   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 获取数据返回: 
  17.   //curl_setopt($ch, CURLOPT_VERBOSE, true); 
  18.   $output = curl_exec($ch) ; 
  19.   curl_close($ch); 
  20.   return $output
  21. function do_Put($url$fields$extraheader = array()){ 
  22.   $ch = curl_init(); 
  23.   curl_setopt($ch, CURLOPT_URL, $url ) ; 
  24.   curl_setopt($ch, CURLOPT_POST, true) ; 
  25.   curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); 
  26.   curl_setopt($ch, CURLOPT_POSTFIELDS, $fields ); 
  27.   curl_setopt($ch, CURLOPT_HTTPHEADER, $extraheader); 
  28.   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 获取数据返回 
  29.   //curl_setopt($ch, CURLOPT_ENCODING, ''); 
  30.   $output = curl_exec($ch); 
  31.   curl_close($ch); 
  32.   return $output
  33. function do_Delete($url$fields$extraheader = array()){ 
  34.   $ch = curl_init(); 
  35.   curl_setopt($ch, CURLOPT_URL, $url ) ; 
  36.   curl_setopt($ch, CURLOPT_POST, true); 
  37.   curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); 
  38.   curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); 
  39.   curl_setopt($ch, CURLOPT_HTTPHEADER, $extraheader); 
  40.   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 获取数据返回 
  41.   //curl_setopt($ch, CURLOPT_ENCODING, ''); 
  42.   $output = curl_exec($ch); 
  43.   curl_close($ch); 
  44.   return $output

最后新建一个basetest.php文件

  1. <?php  
  2. require_once("transfer.php");  
  3. define("PREFIX""http://xxx");  
  4. define("HTTPSPREFIX""https://xxx");  
  5.    
  6. function build_get_param($param) {  
  7.     return http_build_query($param);  

到此接口测试环境搭建完成。

3.编写测试用例

  1. <?php 
  2. $basedir = dirname(__FILE__); 
  3. require_once($basedir . '/lib/basetestdev.php'); 
  4. define("PHONE""xxx"); 
  5. define("PWD""xxx"); 
  6. define("POSTURL","xxx"); 
  7. class TestAPI extends PHPUnit_Framework_TestCase { 
  8.     private function call_http($path$param$expect = 'ok') { 
  9.         $_param = build_get_param($param); 
  10.         $url = PREFIX . "$path?" . $_param
  11.         $buf = do_Get($url); 
  12.         $obj = json_decode($buf, True); 
  13.         $this->assertEquals($obj['retval'], $expect); 
  14.         return $obj
  15.     } 
  16.     private function call_https($path$param$expect = 'ok') { 
  17.         $_param = build_get_param($param); 
  18.         $url = HTTPSPREFIX . "$path?" . $_param
  19.         $buf = do_Get($url); 
  20.         $obj = json_decode($buf, True); 
  21.         $this->assertEquals($obj['retval'], $expect); 
  22.         return $obj
  23.     } 
  24.   public function testLogin(){ 
  25.     $param = array
  26.       'type' => 'phone' 
  27.       ,'token' => PHONE 
  28.       ,'password' => PWD 
  29.     ); 
  30.     $url = 'login'
  31.     return $this->call_http($url$param); 
  32.   } 
  33.   /** 
  34.    * @depends testLogin 
  35.    */ 
  36.   public function testInfo(array $user){ 
  37.     $session = $user['retinfo']['session']; 
  38.     $param = array
  39.       'session' => $session 
  40.     ); 
  41.     $url ='info'
  42.     return $this->call_http($url$param); 
  43.   } 

如果为post请求

  1. public function testPost(){  
  2.     $session = $user['retinfo']['sessionid'];  
  3.     $param = array(  
  4.       ,'data' => '111'  
  5.     );  
  6.     $url = POSTURL.'posturl';  
  7.     return do_POST($url,$param);  
  8.   }

Tags: phpunit php接口测试

分享到: