使用phpunit進(jìn)行接口自動化測試
年初一個偶然的機(jī)會接觸到了phpunit,一個用PHP編程語言開發(fā)的開源軟件,也是一個單元測試框架,有效利用的話可以大大提高接口遍歷的效率。廢話不多說,直接干貨。
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); // 獲取數(shù)據(jù)返回
$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); // 獲取數(shù)據(jù)返回:
//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); // 獲取數(shù)據(jù)返回
//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); // 獲取數(shù)據(jù)返回
//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);
}
到此接口測試環(huán)境搭建完成。
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進(jìn)行接口自動化測試就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
PHP CURL采集百度搜尋結(jié)果圖片不顯示問題的解決方法
這篇文章主要介紹了PHP CURL采集百度搜尋結(jié)果圖片不顯示問題的解決方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-02-02
淺析THINKPHP的addAll支持的最大數(shù)據(jù)量
這篇文章主要介紹了THINKPHP的addAll支持的最大數(shù)據(jù)量,需要的朋友可以參考下2015-02-02
在laravel中實(shí)現(xiàn)ORM模型使用第二個數(shù)據(jù)庫設(shè)置
今天小編就為大家分享一篇在laravel中實(shí)現(xiàn)ORM模型使用第二個數(shù)據(jù)庫設(shè)置,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10

