51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3796|回复: 0
打印 上一主题 下一主题

[转贴] 如何使用Postman实现数据驱动?(下)

[复制链接]
  • TA的每日心情
    擦汗
    7 天前
  • 签到天数: 1027 天

    连续签到: 2 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-4-16 09:51:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    使用Collection Runner批量运行编写的测试用例
      保存后,我们在Collection Runner中运行设计的测试用例脚本。

      进入Collection Runner后,什么都不用改,直接点击底部的蓝色按钮运行(注意要翻到最底部才能看见运行按钮):

      查看运行效果:
      可以看到,5个测试用例,获取验证码的断言有5个;其他测试接口有15个,一共20个断言,都测试通过了!

      这样,设计接口测试用例就完成了。
      四. 数据驱动
      目标:使用数据文件驱动登陆接口的用例
      步骤:
      ·分析用例数据,设计数据文件
      ·在TPshop测试脚本中,使用参数关联技术,关联参数到数据文件中的数据
      1、分析用例数据,设计数据文件
      根据之前的用例设计,登陆接口中,我们需要传入服务器的数据有3条,分别是:
      · username
      · password
      · verify_code
      断言需要校验的数据有3条,分别是:
      · HTTP响应状态码
      · status
      · msg。
      按照分析,我们的数据文件也需要包括这几个参数,分别用于HTTP请求的输入和输出后的预期结果校验。
      根据Postman数据的格式要求,可以分为CSV和Json,这里使用CSV来设计,
      根据上文分析,最终得出了如图所示的数据文件:

      username:登陆的手机号码
      password:密码
      verify_code:登陆的验证码(万能验证码)
      httpresponsecode:http响应状态码
      status:请求成功后,返回的json数据中status的值
      msg:请求成功后,返回的json数据中msg的值
      case_name:描述我们这一组数据的测试点
      这样我们的数据文件就设计好了,接下来,要把数据文件引入到我们的TPshop商城项目的测试脚本中。
      2、在TPshop测试脚本中,使用参数关联技术,关联参数到数据文件中的数据。
      我们的目标就是把数据文件中的6个参数,分别关联到请求数据和断言数据中,怎么做呢,这里要介绍两个方法
      · 请求参数可以通过{{var}}来引用
      · 断言中的数据,由于是在Tests中写入的脚本,并不能直接通过{{var}}来引用,所以需要引用Postman的相关API进行调用,如:pm.variables.get("var")
      登陆接口请求体参数化,修改登陆接口的请求数据,如图所示:

      注意参数名称要和数据文件中的名称保持一致。
      // HTTP响应状态码
      var http_response_code = pm.variables.get("http_response_code");
      // 获取返回的status
      var response_status = pm.variables.get("status");
      // 获取返回的msg
      var response_msg = pm.variables.get("msg");
      // 引用获取的HTTP返回状态码进行断言
      pm.test("HTTP返回响应状态码", function () {
      pm.response.to.have.status(http_response_code);
      });
      // 引用获取的status的值进行断言
      pm.test("返回数据中的status值为1", function () {
      var jsonData = pm.response.json();
      pm.expect(jsonData.status).to.eql(response_status);
      });
      // 引用获取的msg的值进行断言
      pm.test("返回数据中的message值为登陆成功", function () {
      var jsonData = pm.response.json();
      pm.expect(jsonData.msg).to.eql(response_msg);
      });

      这样,我们对登陆接口进行了改动,使其能够读取数据文件中的数据。
      然后我们再使用Collection Runner 单独运行登陆成功接口,查看结果,选择登陆成功模块运行:

      注意和下图保持一致,只运行登陆成功接口。

      选择数据文件
      点击下图中的Data Select File 选择数据文件:

      选择自己构造的数据文件:tpshop_login.csv

      数据文件结构再贴一下。

      选择成功后效果:

      点击Preview查看数据(必须做,如果数据文件不能Preview则需要解决数据问题,中文乱码也需要解决)。

      然后点击运行,查看结果:

      运行完后,发现1个登陆接口运行了5次,比我们之前设计了5个测试用例要简便得多,这样,我们就实现了通过5条数据,完成5个测试点的验证。
      问题:为什么能这么做。
      答:因为Postman每次迭代,会自动读取下一行数据,所以第一次迭代,运行的是第一条:

      第二次迭代运行第二条:

      依次类推,直到数据读完。
      总结
      通过以上5个步骤,我们通过使用Postman实现了数据驱动测试,我们回顾一下每个步骤的作用:
      第一步:理解数据驱动的概念;
      第二步:设计测试用例;
      第三步:用Postman实现测试用例,编写测试脚本;
      第四步:实现数据驱动。
      看完大家想必已经迫不及待想要试一试了,赶快打开Postman来试一试吧!
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-10-7 07:35 , Processed in 0.068729 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表