news 2026/6/16 19:44:59

面试前自测题,接口自动化测试过程中怎么处理接口依赖?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面试前自测题,接口自动化测试过程中怎么处理接口依赖?

面试的时候经常会被问到在接口自动化测试过程中怎么处理接口依赖?

首先我们要搞清楚什么是接口依赖。

01.什么是接口依赖

接口依赖指的是,在接口测试的过程中一个接口的测试经常需要依赖另一个或多个接口成功请求后的返回数据。

那怎么处理呢?不同场景的处理方式有所不同。

02.接口依赖的多种场景

2.1

单接口测试

在单接口测试时接口依赖有两种场景。

1,在整个接口用例测试前的依赖

例如:需要登录后的接口,需要在测试前先访问登录接口获取对应的鉴权凭证,例如 token。

2,在接口的每一个用例测试前的依赖

例如:项目审核接口,需要在每次测试前都创建一个项目

2.2

业务流测试

多接口测试业务流时,下一个接口依赖上一个接口的执行结果。

03.解决方案

不同场景下的解决方案不同。

我们在做接口自动化时不管是 python 语言还是 Java 语言,都会使用单元测试框架。这里我们主要以 python 的 unittest 框架为主,不同框架只是实现方式有所不同,但是思想架构都大同小异。

不管是那种场景的接口依赖都可以通过单元测试框架的前置条件/脚手架代码进行处理,不同的是如何传递依赖的数据。

几乎是所有的单元测试框架中用例都被设计成隔离的,也即是用例对象和用例对象间是隔离的,独立的。所以传递依赖数据需要一个第三方容器。一般有两种方案:

1,定义一个全局变量来共享

2,通过当前测试用例类的类属性共享

3.1

单接口测试场景 1 解决方案

在整个接口用例测试前的依赖,我们放在 unittest 框架的类级前置方法 setUpClass 中进行处理。数据传递通过全局变量和类属性进行共享都可以,代码示例如下:

  1. import unittest

  2. def do_something():

  3. """

  4. 模拟表示前置接口

  5. """

  6. return 3.14

  7. # 定义一个全局变量类

  8. class EnvData:

  9. pass

  10. class SomeTestCase(unittest.TestCase):

  11. @classmethod

  12. def setUpClass(cls) -> None:

  13. # 执行前置操作

  14. data = do_something()

  15. # 将data绑定到全局变量类的类属性上

  16. EnvData.data = data

  17. # 将data绑定到当前类的类属性上

  18. cls.data = data

  19. def test_something(self):

  20. print('执行测试')

  21. # 获取前置方法中产生的数据

  22. # 从全局变量中获取

  23. print(EnvData.data)

  24. # 从当前用例的类属性中获取

  25. print(self.__class__.data)

  26. # 如果当前用例对象没有同名对象属性,也可以直接从对象属性中获取

  27. print(self.data)

  28. if __name__ == '__main__':

  29. unittest.main()

推荐使用类属性进行传递。

3.2

单接口测试场景 2 解决方案

在接口的每一个用例测试前的依赖,放到 unittest 框架的方法级前置方法 setUp 中进行处理。数据可以通过全局变量,类属性,对象属性进行传递,推荐使用对象属性。代码示例如下:

  1. import unittest

  2. def do_something():

  3. """

  4. 模拟表示前置接口

  5. """

  6. return 3.14

  7. class SomeTestCase(unittest.TestCase):

  8. def setUp(self) -> None:

  9. # 执行前置操作

  10. data = do_something()

  11. # 将data绑定到当前对象的属性上

  12. self.data = data

  13. def test_something(self):

  14. print('执行测试')

  15. # 获取前置方法中产生的数据

  16. # 从对象属性中获取

  17. print(self.data)

  18. if __name__ == '__main__':

  19. unittest.main()

3.3

业务流测试场景解决方案

业务流测试时,需要将前一个用例的结果传递给后面的用例。因为用例间是隔离的,所以可以通过全局变量和类属性进行传递。代码示例如下:

  1. import unittest

  2. # 定义一个全局变量类

  3. class EnvData:

  4. pass

  5. class SomeTestCase(unittest.TestCase):

  6. def test_01case(self):

  7. # 模拟接口返回需要传递的数据

  8. res1 = 1

  9. # 将需要传递的数据保存到全局变量类的属性中

  10. EnvData.res1 = res1

  11. # 也可以绑定到当前用例类中进行传递

  12. self.__class__.res1 = res1

  13. def test_02case(self):

  14. # 获取上一个接口传递的数据

  15. # 通过全局变量类获取

  16. res1 = EnvData.res1

  17. # 通过类属性获取

  18. res1 = self.__class__.res1

  19. # 如果没有同名的对象属性也可以直接通过对象属性获取

  20. res1 = self.res1

04.总结

了解了上面的类容,我们来总结一下,接口自动化时怎么处理接口依赖 这个问题的回答如下:

对于单接口测试如果依赖接口只需要在测试开始执行一次,那么可以将依赖接口的请求放在类级前置方法中,然后通过全局变量或者当前用例类属性来传递依赖数据。

对于单接口测试如果依赖接口需要在每个用例前执行,那么可以将依赖接口的请求放在方法级前置方法中,然后通过用例对象属性来传递依赖数据

对于多接口的业务流测试,可以将下一个接口需要依赖的数据通过当前用例类属性来传递依赖数据。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 10:57:46

使用TensorFlow进行保单条款智能比对

使用TensorFlow进行保单条款智能比对 在保险行业,一份车险或寿险保单动辄上百页,条款之间细微的文字调整可能意味着巨大的责任变化。当法务人员需要对比新旧版本合同时,往往要逐字阅读、反复核对,耗时数小时甚至数天。更棘手的是&…

作者头像 李华
网站建设 2026/6/10 10:58:20

开源AI模型终极对决(Open-AutoGLM性能实测TOP5排行榜)

第一章:Open-AutoGLM哪个开源模型功能更强大在当前快速发展的大语言模型生态中,Open-AutoGLM作为一款面向自动化任务的开源语言模型,展现出卓越的指令理解与多场景适配能力。其设计融合了类AutoGPT的任务分解机制与GLM架构的高效生成能力&…

作者头像 李华
网站建设 2026/6/10 10:59:30

从倦怠到成长:Java 工程师之路的低能耗高效进阶指南

从倦怠到成长:Java 工程师之路的低能耗高效进阶指南 摘要:本文面向处于学业压力与职业规划夹缝中的大学生或初学者,深入剖析“想学 Java 却身心俱疲”的典型困境,提出一套融合心理调适、时间管理、微学习策略、认知拓展的系统性解…

作者头像 李华
网站建设 2026/6/10 14:44:28

揭秘Open-AutoGLM游戏自动化:从环境交互到策略生成的完整技术路径

第一章:揭秘Open-AutoGLM游戏自动化的技术起点 Open-AutoGLM 是一个基于大语言模型(LLM)的自动化框架,专为复杂交互场景如游戏任务执行而设计。其核心在于将自然语言指令转化为可执行的动作序列,实现从“理解”到“操作…

作者头像 李华
网站建设 2026/6/14 9:52:07

如何用TensorFlow提升反洗钱系统效率?

如何用TensorFlow提升反洗钱系统效率? 在金融合规的战场上,反洗钱(AML)系统正面临一场前所未有的挑战。每天,大型银行处理数亿笔交易,传统基于规则的检测引擎却像一台老旧的筛子——漏洞越来越多&#xff0…

作者头像 李华
网站建设 2026/6/15 2:42:46

焊接工艺PLC数据采集到本地算法训练服务器的解决方案

某汽车焊装车间深度融合人工智能及时,对关键生产流程进行智能化改造。现场部署有多台焊接机器人与高清摄像头,要求将焊接机器人运行数据和摄像头抓拍画面采集起来,对接到本地训练服务器中,从而建立一个自主训练、识别、告警的管理…

作者头像 李华