ld链接时提示接口未实现_你不知道的接口测试之再谈Postman

101a45c94c79aaf1e300cb9e4fa7f04c.gif

假设我们的需求发生了改变,增加了如下一个限制条件:

  • 只有登录用户,返回数据;

  • 非登录用户,访问返回指定提示,不返回列表数据。

根据这个分析,我们可能采取以下的方式来实现:

  • 创建一个登录接口,登录成功返回指定信息作为登录凭证;

  • getList访问时,携带获取的凭证作为参数,没有该参数,或者参数校验失败,返回空列表和提示信息。

有了以上的分析结果,我们来创建一个登录接口文件(login.php)如下:

<?php // 告诉浏览器返回为json类型header('Content-Type:application/json; charset=utf-8');// 较密用的key$key = 'zhqzs';// 获取参数$name = $_GET['name'];$pwd = $_GET['pwd'];/** * 在真正的开发过程中,会操作数据库,我们暂时用一个多维数组代替 */$users = array(    array('name' => 'zhq','pwd' => '123456','nick' => '天下第一帅'),    array('name' => 'tom','pwd' => '654321', 'nick' => '帅的不明显'));$tokens = array(    'zhq' => 'db16f83919890274272f4517fbba9d76',    'tom' => 'e10adc3949ba59abbe56e057f20f883e');foreach($users as $key=>$value){    if($value['name']==$name && $value['pwd']==$pwd){        // 一通骚操作后,给$token赋值        $token = $tokens[$name];    // 看门大爷登记,发证        $nick_name = $value['nick'];    }}// 组织的数据$data = array(    'code' => 200,    'msg' => '请求成功',    'result' => array(        'name' => $name,        'nick' => $nick_name,        'token' => $token,    ),);// PHP数组转json$rst = json_encode($data,JSON_UNESCAPED_UNICODE);// 打印结果echo $rst;

有了以上的准备,我们来继续讲解Postman的使用。

07d912cc5f03afa7a9ebf0ec3c6b7d80.gif

接口间的依赖

如果访问接口B之前,必须调用A接口,或者满足A条件,那我管A叫做B的依赖。我们把相互依赖的接口放到一个集合中,演示中我们仍然放到TestDemo集合中。

7188ed316c5c5661126ae4f744f3eeb5.png

我们点击集合右侧的按钮,然后按照提示可以完成对于集合的请求测试:

a39d96fb8cfd05b942131b02868fef6f.png f15a35ab94f8fe2958b5bb418e58c3ea.png

我们依然可以运行成功,没有提示任何错误,这是因为我们没有对于接口getList添加必要的参数和处理的代码,所有我们需要修改getList_fix增加以下代码:

$token = isset($_GET['token']) ? $_GET['token'] : '';if(!$token){    // 组织的数据    $data = array(        'code' => 401,        'msg' => '未登录,请先登录',        'result' => array()    );     // PHP数组转json     $rst = json_encode($data,JSON_UNESCAPED_UNICODE);    // 打印结果    echo $rst;    die();}

我们把Postman中getList的接口url修改为getList_fix1.php,在此运行集合测试,结果如下图:

6c98db9b1d49fcf6782ded66553d7bd4.png

这个结果,证明了我们的修改生效,下面我们怎样建立getList对login的依赖呢?

  • 创建一个环境TestDemo,添加一个变量token

  • 在两个接口中的tests(断言区域)修改代码

创建一个环境TestDemo,添加一个变量token

edd85f2e03d641c903bd0f2b70832c10.png d9edc366c1337c866bfc5ea61bfee3fe.png

增加了环境和变量之后,回到Postman主界面,下拉为当前集合选择环境为TestDemo。

在两个接口中的tests(断言区域)修改代码

对于login的tests修改:

//获得tokenvar jsonData = pm.response.json();var token = jsonData.result.token;//设置环境中的token变量为响应结果中的tokenpm.environment.set("token", token);

对于getList_fix1的修改,只需要在访问时携带token参数,这个参数从环境中获取即可,具体修改如下图:

ed439f1b9fba7932c00aa8289b9beec5.png

我们在此执行集合测试,结果如下:

70253721de770186d77cb78655196e37.png

总结接口之间互相依赖的测试原理是:

  • 接口A通过代码 修改环境变量的值

  • 接口B通过{{变量名}}获取A设置的变量值

  • 集合中A----B顺序执行

ps: 其实和依赖相关的还有一个执行顺序,条件分支的操作,但是由于过于复杂的测试操作,增加了测试本身的难度和出错概率,我们在这不讲了,有兴趣的可以自行查找setNextRequest的关键字。

07d912cc5f03afa7a9ebf0ec3c6b7d80.gif

迭代

对于一个接口来说,当接口的参数发生改变,可能返回不同结果,对于测试来说,设计不同用例,覆盖尽可能多的场景,我们以login为例,进行分析:

  • 登录成功场景

    • 使用zhq + 正确密码

    • 使用tom + 正确密码

  • 登录失败场景

    • 使用 zhq + 错误密码

    • 使用 tom + 错误密码

    • 使用 lucy + 任意字符

在进行测试之前,我们先修改login.php为login1.php增加处理登录失败场景的代码:

// 遍历完成后使用一个变量记录状态,如果存在就是真,如果没有就是假$flag = isSet($token) ? true : false ;if($flag){    // 组织的数据    $data = array(        'code' => 200,        'msg' => '请求成功',        'result' => array(            'name' => $name,            'nick' => $nick_name,            'token' => $token,        ),    );}else{    $data = array(        'code' => 200,        'msg' => '账号或者密码错误',        'result' => array()    );}

那么我们针对以上的分析,难道要添加N多个请求吗?答案是否定的,Postman为我们设计了迭代器,下面我们新建一个集合TestDemo2,只针对login1接口进行测试:

在login1接口tests中增加断言如下:

var jsonData = pm.response.json();var expect_msg = pm.variables.get("msg");var response_msg = jsonData.msg;pm.test("返回信息正常", function () {    pm.expect(response_msg).to.eql(expect_msg);});

修改接口访问参数,使用{{}}代替:

e2a8e41c327e5e7378f6effd9ca8db85.png

当前变量肯定是没有的,需要在文件中读取。

创建一个data.csv文件,文件内容如下:

name,pwd,msgzhq,123456,登录成功tom,654321,登录成功zhq,222323,账号或者密码错误tom,ddddd,账号或者密码错误lucy,eeeee,账号或者密码错误

点击集合右侧run按钮,在选择数据文件界面选择data.csv。

2196d382d49277002615cbd97ee06bc4.png

执行集合测试,查看结果:

a00270e04f170eecfba7fe5d2841bf5d.png

Postman作为一款很流程的接口测试软件,功能自然强大无比,在简短的文字根本没有办法全部交代清除,一些功能还要结合实际应用,在这里就不过多讲解了,有需要的同学可自己百度。下一小节,我们对于接口测试进行一些补充说明。

07d912cc5f03afa7a9ebf0ec3c6b7d80.gif

 总结

  1. 使用Postman的环境设置变量;

  2. 设置接口之间的依赖;

  3. 使用Postman的迭代器;

  4. 集合测试时,使用文件中的数据。

1b59f3b61fc427574459d933e025894b.gif

900082e35ba501245f6f3b5bc37ca539.png

链接:https://www.jianshu.com/p/67cd9affeccf

本文为51Testing经授权转载,转载文章所包含的文字来源于作者。如因内容或版权等问题,请联系51Testing进行删除

6b6c96268bc82a60d80e5731745eb82d.gif

41463a04ed3ac79ee77c8b675c40c851.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值