李连杰的真实身份轰动全(李连杰的真实身份轰动全国 localhost)

接口测试并非高不可攀,也并非神秘,想入门的同学,不妨听我絮絮叨叨的道来!

一个简单的接口(demo.php)

搭建一个lnmp服务,把代码放到指定目录,假设我们的测试目录是:

我们编写demo.php文件如下:

<?php

// 告诉浏览器返回为json类型
header('Content-Type:application/json; charset=utf-8');

// 组织的数据
$data = array(
'code' => 200,
'msg' => '请求成功',
'result' => array(
'key1' => 'value1',
'key2' => 'value2'
)

);

// PHP数组转json
$rst = json_encode($data,JSON_UNESCAPED_UNICODE);

// 打印结果
echo $rst;

这就是一个比较简单的接口。

我们要测什么

还是用上面的接口实例,我们要测试的无非是(其他的用到再说,比如http_code):

json对象的键“code”,是不是等于 200,

json对象的键“msg”,是不是等于 "请求成功",

result对象的键“key1”,是不是等于 "value1"

工作中接口数据会根据一定规则变化的,那么这个“规则”才是我们要测试的重点,我们看如下这个接口(demo1.php)。

<?php

// 告诉浏览器返回为json类型

header('Content-Type:application/json; charset=utf-8');

// 获取一个0到2的随机数

$index = rand(0,2);

$msgs = array('请求成功','请求失败','其他错误');

// 组织的数据

$data = array(

'code' => 200,

'msg' => $msgs[$index],

'result' => array(

'key1' => 'value1',

'key2' => 'value2'

)

);

// PHP数组转json

$rst = json_encode($data,JSON_UNESCAPED_UNICODE);

// 打印结果

echo $rst;

在浏览器中多次访问,我们可能会得到如下结果:

{

"code": 200,

"msg": "请求成功",

"result": {

"key1": "value1",

"key2": "value2"

}

}

{

"code": 200,

"msg": "请求成功",

"result": {

"key1": "value1",

"key2": "value2"

}

}

{

"code": 200,

"msg": "请求失败",

"result": {

"key1": "value1",

"key2": "value2"

}

}

{

"code": 200,

"msg": "其他错误",

"result": {

"key1": "value1",

"key2": "value2"
}

}

在这个接口中,我们要测试的是“随机”这个规则,测试就是通过返回给浏览器中的msg是否发生了随机变化,那么我们要测试的是:

json对象的键“msg”,是不是属于 “请求成功”,"请求失败","其他错误" 中的一个,

json对象的键“msg”,是不是属于 “请求成功”,"请求失败","其他错误" 中的一个,

json对象的键“msg”,是不是属于 “请求成功”,"请求失败","其他错误" 中的一个,

json对象的键“msg”,是不是属于 “请求成功”,"请求失败","其他错误" 中的一个,

…..

以上步骤执行多次,直到取到所有的值!!!!

讲到这里产生了一个问题:如果始终没有返回所有的情况怎么办?

客观讲,这样的接口是没有意义的,也是不容易被测试的。所以后端工程师一般会根据请求端的变化而变化,那么请求如何变化的呢?这就是我们接下来要说的参数。

带参数的请求(demo2.php)

<?php

// 告诉浏览器返回为json类型

header('Content-Type:application/json; charset=utf-8');

// 获取参数index

$index = $_GET['index'];

// 获取一个0到2的随机数

//$index = rand(0,2);

$msgs = array('请求成功','请求失败','其他错误');

// 组织的数据

$data = array(

'code' => 200,

'msg' => $msgs[$index],

'result' => array(
'key1' => 'value1',

'key2' => 'value2'

)

);

// PHP数组转json

$rst = json_encode($data,JSON_UNESCAPED_UNICODE);

// 打印结果

echo $rst;

我们在浏览器中依次输入如下内容:

http://localhost/about_test/demo2.php?index=0,

http://localhost/about_test/demo2.php?index=1,

http://localhost/about_test/demo2.php?index=2,

返回结果如下:

{

"code": 200,

"msg": "请求成功",

"result": {

"key1": "value1",

"key2": "value2"

}

}

{

"code": 200,

"msg": "请求失败",

"result": {

"key1": "value1",

"key2": "value2"

}
}

{

"code": 200,

"msg": "其他错误",

"result": {

"key1": "value1",

"key2": "value2"

}

}

是不是看起来很眼熟?是的,这个和demo1.php的返回很像,但是也有区别,区别在于,只要url后面的index固定是某个值,那么返回结果也固定某个值。类似的有含有分页参数的接口如下(getList.php):

<?php

// 告诉浏览器返回为json类型

header('Content-Type:application/json; charset=utf-8');

// 获取参数index

$page = $_GET['page'];

$size = $_GET['size'];

/**

* 在真正的开发过程中,会操作数据库,我们暂时用一个多维数组代替

*/

$data_list = array(

array('id'=>1,'name'=>'成龙'),

array('id'=>2,'name'=>'周润发'),

array('id'=>3,'name'=>'周星驰'),

array('id'=>4,'name'=>'李连杰'),

array('id'=>5,'name'=>'梁朝伟'),

array('id'=>6,'name'=>'张曼玉'),

array('id'=>7,'name'=>'惠英红'),

array('id'=>8,'name'=>'林青霞'),

array('id'=>9,'name'=>'王祖贤'),
array('id'=>10,'name'=>'巩俐')

);

foreach($data_list as $key=>$value){

if($key >= ($page -1) * $size && $key < $page * $size){

$temp[] = $value;

}

}

// 组织的数据

$data = array(

'code' => 200,

'msg' => '请求成功',

'result' => $temp

);
// PHP数组转json

$rst = json_encode($data,JSON_UNESCAPED_UNICODE);

// 打印结果

echo $rst;

我们在浏览器中打开如下链接:

http://localhost/about_test/getList.php?page=4&size=2

返回结果如下:

{

"code": 200,

"msg": "请求成功",

"result": [

{

"id": 7,

"name": "惠英红"

},

{

"id": 8,

"name": "林青霞"

}

]

}

如果我们使用抓包工具(后面会详细讲),可能经常看到在url后面没有携带参数,但是返回的数据也可能发生变化,那是怎么回事呢?其实访问接口还有另外一种方式—post请求。

换个姿势请求(post请求)

我们把getList.php文件稍微做一下修改,得到以下代码(getList_post.php):

<?php

// 告诉浏览器返回为json类型

header('Content-Type:application/json; charset=utf-8');

// 获取参数index

//$page = $_GET['page'];

//$size = $_GET['size'];

$page = $_POST['page'];

$size = $_POST['size'];

/**

* 在真正的开发过程中,会操作数据库,我们暂时用一个多维数组代替

*/

$data_list = array(

array('id'=>1,'name'=>'成龙'),

array('id'=>2,'name'=>'周润发'),

array('id'=>3,'name'=>'周星驰'),

array('id'=>4,'name'=>'李连杰'),

array('id'=>5,'name'=>'梁朝伟'),

array('id'=>6,'name'=>'张曼玉'),

array('id'=>7,'name'=>'惠英红'),

array('id'=>8,'name'=>'林青霞'),

array('id'=>9,'name'=>'王祖贤'),

array('id'=>10,'name'=>'巩俐')

);

foreach($data_list as $key=>$value){

if($key >= ($page -1) * $size && $key < $page * $size){

$temp[] = $value;

}

}

// 组织的数据

$data = array(

'code' => 200,

'msg' => '请求成功',

'result' => $temp

);

// PHP数组转json

$rst = json_encode($data,JSON_UNESCAPED_UNICODE);

// 打印结果

echo $rst;

这次我们**不能**通过在浏览器中直接输入访问地址+参数来获取返回结果,我们可以使用mac自带的终端来进行访问:

curl localhost/about_test/getList_post.php -X POST -d 'page=4&size=2'

我们如愿以偿的得到了下面的结果:

{"code":200,"msg":"请求成功","result":[{"id":7,"name":"惠英红"},{"id":8,"name":"林青霞"}]}

从上面的对比***也许大概差不多可能***大家能感觉到,post请求要比get麻烦!

这可能也符合我们朴素的认知:

**简单的,意义不大的总是容易得到;

复杂的,意义重大的需要你付出才能得到(post本身有发送的意思)**

总结

1. 一个简单接口,发送请求就会返回数据。

2. 测试就是测试规则。

3. 接口返回数据是会根据参数发生变化的。

4. 接口请求方式有get和post。

本文来自尔容投稿,不代表胡巴网立场,如若转载,请注明出处:https://www.hu85.com/138573.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxxxx@qq.com 举报,一经查实,本站将立刻删除。