高频面试题/面试经常被问到怎么处理接口依赖该怎么回答

news2024/12/28 3:25:45

前言

由于快到金九银十了,笔者最近呢发的都是一些有关面试方面的文章,有需要的小伙伴可以看看笔者的文章希望可以帮助到大家,今天呢笔者想和大家来聊聊在面试中被问到怎么处理接口依赖改怎么回答,废话就不多说了咱们直接进入主题哈。

接口依赖

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

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

1. 什么是接口依赖

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

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

2. 接口依赖的多种场景

2.1 单接口测试

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

  1. 在整个接口用例测试前的依赖
  2. 例如:需要登录后的接口,需要在测试前先访问登录接口获取对应的鉴权凭证,例如token。
  3. 在接口的每一个用例测试前的依赖
  4. 例如:项目审核接口,需要在每次测试前都创建一个项目

2.2 业务流测试

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

3. 解决方案

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

不管是那种场景的接口依赖都可以通过单元测试框架的前置条件/脚手架代码进行处理,不同的是如何传递依赖的数据。几乎是所有的单元测试框架中用例都被设计成隔离的,也即是用例对象和用例对象间是隔离的,独立的。所以传递依赖数据需要一个第三方容器。一般有两种方案:

  1. 定义一个全局变量来共享
  2. 通过当前测试用例类的类属性共享

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

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

import unittest


def do_something():
    """
    模拟表示前置接口
    """
    return 3.14


# 定义一个全局变量类

class EnvData:
    pass


class SomeTestCase(unittest.TestCase):

    @classmethod
    def setUpClass(cls) -> None:
        # 执行前置操作
        data = do_something()
        # 将data绑定到全局变量类的类属性上
        EnvData.data = data
        # 将data绑定到当前类的类属性上
        cls.data = data

    def test_something(self):
        print('执行测试')
        # 获取前置方法中产生的数据
        # 从全局变量中获取
        print(EnvData.data)
        # 从当前用例的类属性中获取
        print(self.__class__.data)
        # 如果当前用例对象没有同名对象属性,也可以直接从对象属性中获取
        print(self.data)

if __name__ == '__main__':
    unittest.main()

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

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

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

import unittest


def do_something():
    """
    模拟表示前置接口
    """
    return 3.14


class SomeTestCase(unittest.TestCase):

    def setUp(self) -> None:
        # 执行前置操作
        data = do_something()
        # 将data绑定到当前对象的属性上
        self.data = data

    def test_something(self):
        print('执行测试')
        # 获取前置方法中产生的数据
        # 从对象属性中获取
        print(self.data)

if __name__ == '__main__':
    unittest.main()

3.3 业务流测试场景解决方案

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

import unittest

# 定义一个全局变量类

class EnvData:
    pass


class SomeTestCase(unittest.TestCase):
  
    def test_01case(self):
        # 模拟接口返回需要传递的数据
        res1 = 1
        # 将需要传递的数据保存到全局变量类的属性中
        EnvData.res1 = res1
        # 也可以绑定到当前用例类中进行传递
        self.__class__.res1 = res1
  
    def test_02case(self):
        # 获取上一个接口传递的数据
        # 通过全局变量类获取
        res1 = EnvData.res1
        # 通过类属性获取
        res1 = self.__class__.res1
        # 如果没有同名的对象属性也可以直接通过对象属性获取
        res1 = self.res1

4. 回答

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

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

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

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

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

全套资料获取方式:点击下方小卡片自行领取即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/656393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

互斥锁实现线程互斥(嵌入式学习)

互斥锁实现线程互斥 互斥锁的概念互斥锁的函数示例代码 互斥锁的概念 互斥锁(Mutex)是一种用于多线程编程的同步原语(synchronization primitive),用于实现线程之间的互斥访问共享资源。互斥锁提供了一种机制&#xff…

限流式保护器在高校中的应用

安科瑞虞佳豪 4月10日下午1点50多分 浙大紫金港校区边一活动板房发生火情。起火位置为浙大紫金港校区的动物保护基地。 “起火的地方是有一个学生动物保护者协会,里面有一些学生救助的猫、狗等小动物。”一位学校的学生告诉潮新闻记者。 随后,潮新闻…

C语言(14) 谈谈嵌入式 C 语言踩内存问题!

1 概述 C 语言内存问题,难在于定位,定位到了就好解决了。 这篇笔记我们来聊聊踩内存。踩内存,通过字面理解即可。本来是操作这一块内存,因为设计失误操作到了相邻内存,篡改了相邻内存的数据。 踩内存,轻则…

Shopify股价在暴涨了78%以后,还值得投资吗?

来源:猛兽财经 作者:猛兽财经 今年以来Shopify (SHOP)的股价一直在上涨,迄今为止的涨幅已经超过了78%,并且远远跑赢了美股的所有主要指数。 猛兽财经认为,Shopify的股价之所以能在今年上涨,主要受到以下几…

windows2022证书配置.docx

Windows证书的配置 要求两台主机,一台作为域,一台进入域 按要求来选择角色服务 确认之后安装 安装完以后配置证书服务 选择服务 按要求配置 注:此处不用域用户登陆无法使用企业CA 按要求来 创建新的私钥 这几处检查无误后默认即可 有效期…

实验篇(7.2) 16. 站对站安全隧道 - 通过聚合隧道走对方上网(FortiGate-IPsec) ❀ 远程访问

【简介】前面所有实验基本上是由向导来完成的,只有隧道聚合实验是手动设置的。那么远程访问经常用到的走对方宽带上网功能,需要怎样手动配置呢? 实验要求与环境 OldMei集团深圳总部防火墙现在有三条宽带了,二条普通宽带用来上网及…

SSCMS 内容管理系统介绍

概述 SSCMS 内容管理系统基于微软 .NET Core 平台开发,用于创建在 Windows、Linux、Mac 以及 Docker 上运行的 Web 应用程序和服务。 SSCMS 针对企业级客户开发,完全开源免费,可以用于商业用途不需要支付任何产品或授权费用。 SSCMS 经受了时间考验,1.0 版本在2003年发布…

跨模态检索最新高质量综述《Image-text Retrieval: A Survey on Recent Research and Development》

Image-text Retrieval: A Survey on Recent Research and Development 图像文本检索研究进展综述 2022.03 本文已把文献的引用逐个换成相应的论文标题,方便查找和阅读 摘要 本文从四个方面对ITR方法进行了全面和最新的调查。通过将ITR系统剖析为两个过程&#xff1…

基于Java+Swing+Mysql实现汽车信息管理系统

基于JavaSwingMysql实现汽车信息管理系统 一、系统介绍二、功能展示1.登陆2.车辆信息3.车辆入库4.车辆出库5.车辆查询6、车辆信息修改 三、数据库四、其它1.其他系统实现五.获取源码 一、系统介绍 系统实现汽车入库,汽车出库,汽车查询,汽车信…

2023软件测试八股文最全文档,再也不用担心面试了

前言 6月份已经快过完一半了,马上就要到金九银十的黄金招聘季节了,还在准备面试跳槽涨薪的小伙伴们可以看看本篇文章哟,这里呢笔者就不多说废话了直接上干货!答案已整理好,文末拿去即可!非常好用&#xff…

day57_Git

今日内容 零、 复习昨日 零、 复习昨日 文章目录 零、 复习昨日一、引言二、介绍三、Git安装3.1 下载Git3.2 安装3.3 基本配置3.4 测试 四、架构五、仓库5.1 新建仓库5.2 工作区5.3 暂存区5.4 分支 六、基本操作6.1 查看仓库状态6.2 暂存文件6.3 提交文件6.4 撤销已经add的文件…

POSTGRESQL PG_GATHER 如何单纯用SQL 就可以产生一个有意思的PG 的分析报告

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

【Android开发基础】Canvas画笔(以刮刮乐为例)

文章目录 一、引言二、设计1、获取图片资源2、获取屏幕信息3、Canvas涂层4、随机内容5、屏幕监听 三、附件1、UI设计2、总代码(1)控件初始化(2)图层初始化 3、源代码 一、引言 (本篇博客只说明Canvas画笔的使用&#…

STM32单片机(六)TIM定时器 -> 第六节:TIM输入捕获练习(输入捕获模式测频率和PWMI模式测频率占空比)

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…

docker inspect

docker inspect 命令用于获取有关 Docker 容器、镜像、网络等的详细信息。它提供了关于指定对象的元数据和配置的完整视图,包括运行状态、网络设置、卷挂载、环境变量等。 以下是一些常见的字段和属性,可以根据需要选择其中一些或全部列出: …

【算法与数据结构】202、LeetCode快乐数

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:先用一个dowhile循环计算整数各个位数字的平方和,然后在unordered_set里面插入n&#xff0…

C语言学习笔记:函数

✨博文作者:烟雨孤舟 💖 喜欢的可以 点赞 收藏 关注哦~~ ✍️ 作者简介: 一个热爱大数据的学习者 ✍️ 笔记简介:作为大数据爱好者,以下是个人总结的学习笔记,如有错误,请多多指教! 目录 简介 …

关于OpenCV中minAreaRect角度记录

一、问题引出 最近看到stackflow关于minAreaRect的讨论: MinAreaRect angles - Unsure about the angle returnedOpenCV’s RotatedRect angle does not provide enough information 大概问题是minAreaRect这个接口返回的角度信息不足以反应返回的旋转矩形的旋转…

appium辅助自动化工具-- Appium studio

这里我要给大家介绍一款appium辅助自动化测试工具appium studio,你没看错,不是android studio,也不是appium android studio,就是appium studio! 下载地址: Appium Studio | Digital.ai Continuous Test…

架构-计算机体系结构

章节架构 分值约 3 分 #mermaid-svg-nV7dvQlYnuXaOVOf {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-nV7dvQlYnuXaOVOf .error-icon{fill:#552222;}#mermaid-svg-nV7dvQlYnuXaOVOf .error-text{fill:#552222;strok…