• 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

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


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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   最近火出圈的 ChatGPT 公司 OpenAI 发布了 Chat API 和 gpt-3.5-turbo 模型,我们现在可以通过API 来使用与 ChatGPT 一样的 NLP 模型。  使用OpenAI API,可以使用gpt-3.5-turbo构建自己的应用程序,可执行以下任务:  草拟电子邮件或其他文字内容写代码,例如Python代码  创建对话代理,回答各类问题  为您的软件提供自然语言界面  在各种学科中进行辅导  翻译语言  为视频游戏模拟角色等  待发掘的各种应用场景……  下面用 Python 来讲解如何使用 openai python SDK 实现自...
            0 0 2061
            分享
          • 测试主管岗位职责带领测试团队完成产品和项目测试的任务,统计和分析测试结果,问题确认和跟踪,推动问题及时合理解决:1、测试流程、体系的梳理和建立2、测试环境的配置和版本管理3、完成组内人员招聘、培训及团队建设4、测试组人员的技能和业务培训,提升团队的测试能力5、制定、编写测试方案 及 计划,包括人员安排、测试进度、测试流程等,完成测试任务,编写测试报告6、与上级及协作部门沟通测试进度及结果测试经理是测试团队的负责人,负责领导和管理团队的日常工作,其岗位职责如下: 1、负责建立和维护一个有效的测试流程; 2、负责测试团队的日常管理工作; 3、负责制定和安排测试计划、测...
            0 0 4742
            分享
          •   接口测试流程及用例设计  接口测试是整项目测试过程中非常重要的一环,测试的对象是接口,所以可以很早的介入测试,对代码逻辑进行全面验证,更早的发现程序的问题,比UI测试效率更高,并且更容易验证极端和异常的情况。  接口测试流程:  类似于功能测试流程,一个完整的接口测试流程如下:  1. 分析接口文档和需求文档  2. 编写接口测试计划  3. 编写接口测试用例  4. 接口测试执行  5. 输出接口测试报告。  一般接口用例设计依据的就是开发提供的接口文档和产品需求文档,首先认识一下接口文档。  接口文档  接口文档如何描述一个具体的接口信息,示例如下:接口文档  主要包括如下几个部分: ...
            0 0 671
            分享
          • 软件测试人员应该居安思危每当经济不好,公司业绩不好的时候,公司都可能进行裁员。首先裁的就是测试人员。因为测试人员的技术水平相对来说比较低,容易被替代,招起来也比较容易。公司往往先拿测试人员开刀。身为测试人员,虽然我们平常的工作大部分都比较安逸。但是千万不能温水煮青蛙。应该自强不息,要像开发人员一样,不断学习,提高自己的编程水平。这样就算被裁也能很快找到新的工作。测试人员应该比开发人员更熟悉业务需求测试人员的水平主要体现在测试用例的设计上。要设计出全面,覆盖广的测试用例,需要测试人员对自己所测试的项目的业务需求非常熟悉,甚至要比开发人员还要熟悉。如果是测试银行系统,通信行业,或者ERP软件。这些...
            0 0 526
            分享
          •   不久前,一位朋友让帮忙推荐个测试工程师,于是聊到了他们对测试工程师的诉求。  朋友公司是一家做教育软件的公司:Web端、App端产品都有涉及。  最初的诉求就是想找一位有1-2年相关产品测试经验的人即可。  但经过几轮沟通后,他的诉求增加了不少:  ·最好会一点自动化、性能,以后会用到;  · 最好会一点运维,开发测试环境要分开;  · 最好再会一点开发语言,能够写一些脚本或测试工具;  · 最好有过主导产品测试工作的经验,能够推动生产过程改进,持续质量提升。。。  原来公司对面试者的期望是:身怀绝技Or(And)十八般武艺Or(And)七十二变。  我们经常...
            0 0 503
            分享
      • 51testing软件测试圈微信