欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-28 11:12:16
年初一个偶然的机会接触到了phpunit,一个用php编程语言开发的开源软件,也是一个单元测试框架,有效利用的话可以大大提高接口遍历的效率。废话不多说,直接干货。 1.安...

年初一个偶然的机会接触到了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); 
  } 

以上这篇使用phpunit进行接口自动化测试就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。