• 0
  • 0
分享

当进行 自动化测试 编排时,测试步骤间的数据传递是至关重要的。


在传统的方式中,一般通过复杂的脚本配置,或者手动复制这些数据,然后再慢慢地粘贴到每个需要它们的地方,以此来实现接口之间的参数传递。这种方式往往效率低下、容易出错并且难以维护,当接口或业务逻辑发生变化时,需要进行大量修改,增加了维护成本。


为了应对这种复杂的数据依赖关系,Apifox 中引入了「动态值」传递机制。


这种机制就像是一个灵活的“桥梁”,将指定的“上游”测试步骤的运行结果捕获,并插入到“下游”测试步骤的请求参数中,确保测试用例能够适应不同场景下的数据变化。


这种响应关联机制消除了中间的手动传递数据环节,使得测试工作更连贯、高效,并降低了出错的可能性。

讲了这么多,那么如何在 Apifox 中设置动态值呢?或者换句话说,如何在自动化测试里通过「动态值」读取前置步骤的运行结果呢?


设置动态值实际上非常简单,你只需要在自动化测试的接口详情中,在你定义参数值时点击“魔棒”图标,选择「读取前置步骤的运行结果」选项。

1.png

然后选择一个你想要从中提取数据的前置步骤:

2.png

接着将你需要的数据提取出来,你可以提取前置步骤的请求参数(请求头、请求体等)和响应数据(响应头、响应正文等)  

3.png

如果你提取的是前置步骤中返回的响应正文,你也可以通过 JSONPath 表达式来继续定位(比如获取某个具体 ID 值)

4.png

最后如果需要对数据进行特殊处理,你还可以添加处理函数,对你的数据进行加密、解密和类型转换等。

5.png

怎么样,是不是非常 nice,以前 30 分钟的活儿现在 3 分钟就给它干完了。这不仅省掉了时间和降低了出错的风险,而且能让你专注于更重要的事情——比如喝杯咖啡,或者想想午餐吃啥子? 。

好的,基本的功能介绍完毕,下面通过一个案例来实际演示一下更具体的使用。

实战演示

想象一下,你正在测试一个宠物商店的在线 API,其中一个自动化测试任务是“确认可以成功地增加新宠物并查询新增后的宠物信息”,这个任务可以进行两个步骤的测试:


  • “增加新宠物”步骤:在这里,你发送一个请求,告诉系统有一只新宠物需要注册。你得到了响应,包括了新宠物的 ID。

  • “查询宠物信息”步骤:在这一步,你需要使用刚才注册宠物时得到的宠物 ID 来查询它。


不用动态值,通常路径是这样的:新增完宠物,得到宠物 ID后,你需要复制宠物 ID,然后人工粘贴到查询请求中。


但如果用了动态值,流程就这样:新增完宠物 -> 得到宠物 ID  -> 下游测试步骤自动读取该宠物 ID  -> 发送请求。完全无需你的干预。


我们在 Apifox 中来操作一下这个自动化测试任务。


步骤 1 查看待提取参数


在“增加新宠物”这一步,假设新增宠物后返回的数据结构是这样的(当然我们也可以在接口文档中查看事先定义的接口响应的数据结构):


{

  "code": 0,

  "data": {

    "id": 1,

    "name": "中华田园犬",

    "photoUrls": [

      "http://dummyimage.com/336x280"

    ],

    "status": "sold"

    // 其它信息 ......

  }

}



我们的目的是在“下游”测试步骤中,将“上游”测试步骤的特定参数提取出来使用。所以如果我们要提取出宠物 id ,就要先定位它在响应结果中的位置,根据上面的数据结构,可以看出 id 值位于 data 对象中。


待提取参数的位置确认好后,我们就可以在“下游”测试步骤中引用它。


步骤 2 动态值引用前置结果


在“查询宠物信息”这一步,进入测试步骤详情页,点击类似“魔棒”的图标,然后选择「读取前置步骤的运行结果」选项。

6.png

将前置步骤选中后,选择从响应正文(Body)中提取信息,指定“提取部分”数据,并通过 JSONPath 表达式进一步定位。在本例中,根据“新增宠物”后返回的数据结构,若想要提取到宠物 id,需要填写的表达式为 data.id,填写完毕后,点击“插入”即可。


JSONPath 表达式通过「 . 」来匹配下级元素,更多用法你可以前往 Apifox 帮助文档了解。**

7.png

“插入”完毕,你可以查看参数值的来源和提取位置。

8.png

步骤 3 验证参数传递


现在,让我们验证一下,是否将前置步骤的结果引用了。运行该自动化测试场景,然后在「测试报告」中查看详情。

9.png

其中,“新建宠物”步骤中返回了如下的 JSON 响应,其中包含它的 id 值。

10.png

我们来看一下“查询宠物信息”步骤中,是不是拿这个 id 去查的。如下图所示,它的请求参数和新建宠物后返回的 id 一致,参数传递成功,说明已成功读取到前置步骤的运行结果。

11.png

如果出现错误,那么大概率是因为你的 JSONPath 表达式写错了,你可以在该测试报告中点击「调试此步骤」按钮。

12.png

然后跳转到该测试步骤的详情页,鼠标移动到「动态值」那里,你可以快速地定位出问题所在,这样出现问题时就不用在几十个测试步骤里找来找去了。

13.png

看吧,是不是很神奇?这正是自动化测试中引入「动态值」这样的功能能够为我们节省时间和精力的原因。如果你还在手工处理这些繁琐的测试步骤,那么是时候升级你的测试流程,开始使用动态值了。这样一来,你的测试不仅更快,更准确,还会给你多留出时间去做更重要的事情。


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 当今软件开发中,接口测试已成为必不可少的一环。选择合适的接口测试工具对于程序员来说非常重要,因为这可以帮助他们更快、更高效地评估接口的质量和可靠性。为了提高测试效率和测试质量,自动化接口测试已经逐渐普及。然而,由于市场上有许多不同的接口测试工具,程序员们很难选择合适的工具。如何选择适合自己的工具呢?一、选择接口测试工具的考虑因素首先,得知道在选择接口测试工具时应该考虑哪些重要因素:1、易用性易用性是选择接口测试工具时首要考虑的因素。工具必须具有清晰的界面,能够让程序员快速、方便地操作。同时,工具也应该具有详细的帮助文档,方便程序员使用。2、功能性功能性是选择接口测试工具时第二重要的因素。工具必...
            0 0 1361
            分享
          • 摘要:企业老板和开发人员必须牢记,现代用户可能非常挑剔和苛刻,他们必须尽最大努力满足所有用户的期望。解决这个问题的最好方法是定期进行可用性测试。手机应用每天都在发布。应用商店提供数以百万计的移动应用版本,努力满足所有可能的需求,满足任何口味。你的手机应用是否拥有出色且独特的功能,但用户数量仍然很低?营销噱头不是答案。是时候关注可用性了。用户选择下载某个应用程序是为了执行某些任务或解决某个特定问题。他们在寻找解决方案,而不是额外的问题,如不全面的菜单或元素搜索。如果一款应用的设计并不直观,并且用户所需要的UI元素位于用户意想不到的位置,他们通常不会浪费时间去了解如何使用这款应用;他们只是卸载它,...
            1 0 797
            分享
          •   很多人可能都还不明白需求分析和需求管理之间的区别,通常我们说起来最多的都是需求沟通和需求分析,开会都是讨论需求如何如何做,这其实是需求分析的过程如何如何,而与需求有关的其他活动提及的比较少。其实需求沟通和需求分析都只是需求管理过程中的两个环节。   一个项目做了很久,人力投入越来越多,大家都像打了鸡血一样天天加班,但是感觉总是做不完,就像一个“无底洞”。想尽快完成这个项目的时候,总有新的需求要做。实际上,这里涉及到一个需求管理的概念。项目中哪些该做,哪些应该先做,做到什么程度,都是由需求管理的过程来决定的。   通常需求管理是对需求生命周期的管理,从需求的产生到需求的结...
            0 0 454
            分享
          • 引言对于产品的手机项目(应用软件),主要是进行系统测试。而针对手机应用软件APP的系统测试,我们通常从如下几个角度开展:功能模块测试、兼容性测试、安装和卸载测试、软件更新测试、性能测试、用户体验性测试、交叉事件测试、用户界面测试等。功能测试要点及常见缺陷常见的功能类缺陷APP崩溃这是测试中的常见问题,这类问题也是非常严重的,会直接影响用户对产品的第一印象,例如我们正在使用某个APP,正在使用突然应用就停止响应,界面上弹出“强制关闭错误”的窗口,需要强制关闭应用,或者正在使用时出现闪退的现象。这些情况都很影响用户的体验,导致用户卸载该APP。通用的触发移动APP崩溃的测试场景,如下:验证在有不同...
            14 14 1664
            分享
          • 代码题:**旋转数组:这个在美团一面的时候也遇到过**假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。int findMin(vector<int>& nums) {         int left = 0, right = nums.size()-1,&...
            1 1 2112
            分享
      • 51testing软件测试圈微信