加入收藏 | 设为首页 | 会员中心 | 我要投稿 信阳站长网 (https://www.0376zz.com.cn/)- 基础存储、混合云网络、云安全、数据仓库、大数据!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-07-15 11:22:14 所属栏目:PHP教程 来源:互联网
导读:下面小编就为大家分享一篇使用phpunit进行接口自动化测试,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧 年初一个偶然的机会接触到了phpunit,一个用PHP编程语言开发的开源软件,也是一个单元测试框架,有效利用的话可以大大提高接口遍
  下面小编就为大家分享一篇使用phpunit进行接口自动化测试,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧
 
  年初一个偶然的机会接触到了phpunit,一个用PHP编程语言开发的开源软件,也是一个单元测试框架,有效利用的话可以大大提高接口遍历的效率,废话不多说,直接干货。
 
  1.安装
 
  在php的目录下
 
  pear channel-discover pear;
 
  pear install phpunit/PHPUnit
 
  2.配置
 
  首先新建一个lib文件夹存放的配置文件,然后再新建一个transfer.php的文件
 
  <?php
  function do_Post($url, $fields, $extraheader = array()){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields );
    curl_setopt($ch, CURLOPT_HTTPHEADER, $extraheader);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 获取数据返回
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
  }
  function do_Get($url, $extraheader = array()){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $extraheader);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 获取数据返回:
    //curl_setopt($ch, CURLOPT_VERBOSE, true);
    $output = curl_exec($ch) ;
    curl_close($ch);
    return $output;
  }
  function do_Put($url, $fields, $extraheader = array()){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url ) ;
    curl_setopt($ch, CURLOPT_POST, true) ;
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields );
    curl_setopt($ch, CURLOPT_HTTPHEADER, $extraheader);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 获取数据返回
    //curl_setopt($ch, CURLOPT_ENCODING, '');
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
  }
  function do_Delete($url, $fields, $extraheader = array()){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url ) ;
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $extraheader);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 获取数据返回
    //curl_setopt($ch, CURLOPT_ENCODING, '');
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
  }
  最后新建一个basetest.php文件
 
  <?php  
  require_once("transfer.php");  
  define("PREFIX", "http://xxx");  
  define("HTTPSPREFIX", "https://xxx");  
     
  function build_get_param($param) {  
      return http_build_query($param);  
  }
  到此接口测试环境搭建完成。
 
  3.编写测试用例
 
  <?php
  $basedir = dirname(__FILE__);
  require_once($basedir . '/lib/basetestdev.php');
  define("PHONE", "xxx");
  define("PWD", "xxx");
  define("POSTURL","xxx");
  class TestAPI extends PHPUnit_Framework_TestCase {
      private function call_http($path, $param, $expect = 'ok') {
          $_param = build_get_param($param);
          $url = PREFIX . "$path?" . $_param;
          $buf = do_Get($url);
          $obj = json_decode($buf, True);
          $this->assertEquals($obj['retval'], $expect);
          return $obj;
      }
      private function call_https($path, $param, $expect = 'ok') {
          $_param = build_get_param($param);
          $url = HTTPSPREFIX . "$path?" . $_param;
          $buf = do_Get($url);
          $obj = json_decode($buf, True);
          $this->assertEquals($obj['retval'], $expect);
          return $obj;
      }
    public function testLogin(){
      $param = array(
        'type' => 'phone'
        ,'token' => PHONE
        ,'password' => PWD
      );
      $url = 'login';
      return $this->call_http($url, $param);
    }
    /**
     * @depends testLogin
     */
    public function testInfo(array $user){
      $session = $user['retinfo']['session'];
      $param = array(
        'session' => $session
      );
      $url ='info';
      return $this->call_http($url, $param);
    }
  如果为post请求
 
  public function testPost(){  
      $session = $user['retinfo']['sessionid'];  
      $param = array(  
        ,'data' => '111'  
      );  
      $url = POSTURL.'posturl';  
      return do_POST($url,$param);  
    }

(编辑:信阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读