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

 更新时间:2018年03月21日 10:04:26   作者:爱吃烧麦的管  
下面小编就为大家分享一篇使用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); 
  } 

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

相关文章

  • php之Aes加密案例讲解

    php之Aes加密案例讲解

    这篇文章主要介绍了php之Aes加密案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • php四种基础算法代码实例

    php四种基础算法代码实例

    算法是程序的核心,今天我们就学习一下php的四种基础算法:冒泡,选择,插入和快速排序法。
    2013-10-10
  • php调用shell的方法

    php调用shell的方法

    这篇文章主要介绍了php调用shell的方法,包括相关的原理、注意事项及函数用法,需要的朋友可以参考下
    2014-11-11
  • PHP CURL采集百度搜寻结果图片不显示问题的解决方法

    PHP CURL采集百度搜寻结果图片不显示问题的解决方法

    这篇文章主要介绍了PHP CURL采集百度搜寻结果图片不显示问题的解决方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • YII2框架中查询生成器Query()的使用方法示例

    YII2框架中查询生成器Query()的使用方法示例

    这篇文章主要介绍了YII2框架中查询生成器Query()的使用方法,结合实例形式详细分析了YII2查询生成器Query()的基本功能与使用方法,需要的朋友可以参考下
    2020-03-03
  • PHP单链表的实现代码

    PHP单链表的实现代码

    单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。接下来通过本文给大家分享php单链表的实现代码,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
    2016-07-07
  • Laravel关系模型指定条件查询方法

    Laravel关系模型指定条件查询方法

    今天小编就为大家分享一篇Laravel关系模型指定条件查询方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 浅析THINKPHP的addAll支持的最大数据量

    浅析THINKPHP的addAll支持的最大数据量

    这篇文章主要介绍了THINKPHP的addAll支持的最大数据量,需要的朋友可以参考下
    2015-02-02
  • 在laravel中实现ORM模型使用第二个数据库设置

    在laravel中实现ORM模型使用第二个数据库设置

    今天小编就为大家分享一篇在laravel中实现ORM模型使用第二个数据库设置,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 简述PHP7.4 新特性和废弃的功能

    简述PHP7.4 新特性和废弃的功能

    这篇文章主要介绍了简述PHP7.4 新特性和废弃的功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12

最新评论