“我升职的原因是:比同事更早学会这个知识”

编程入门 行业动态 更新时间:2024-10-21 02:45:32

“我<a href=https://www.elefans.com/category/jswz/34/1763950.html style=升职的原因是:比同事更早学会这个知识”"/>

“我升职的原因是:比同事更早学会这个知识”

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

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

01、什么是接口依赖

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

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

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386  

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。/?spm_id_from=333.337 

02、接口依赖的多种场景

1、单接口测试

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

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

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

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

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

2、业务流测试

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

03、解决方案

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

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

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

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

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

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

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

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


import unittestdef do_something():"""模拟表示前置接口"""return 3.14# 定义一个全局变量类class EnvData:passclass SomeTestCase(unittest.TestCase):@classmethoddef setUpClass(cls) -> None:# 执行前置操作data = do_something()# 将data绑定到全局变量类的类属性上EnvData.data = data# 将data绑定到当前类的类属性上cls.data = datadef test_something(self):print('执行测试')# 获取前置方法中产生的数据# 从全局变量中获取print(EnvData.data)# 从当前用例的类属性中获取print(self.__class__.data)# 如果当前用例对象没有同名对象属性,也可以直接从对象属性中获取print(self.data)if __name__ == '__main__':unittest.main()

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

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

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

import unittestdef do_something():"""模拟表示前置接口"""return 3.14class SomeTestCase(unittest.TestCase):def setUp(self) -> None:# 执行前置操作data = do_something()# 将data绑定到当前对象的属性上self.data = datadef test_something(self):print('执行测试')# 获取前置方法中产生的数据# 从对象属性中获取print(self.data)if __name__ == '__main__':unittest.main()

3、业务流测试场景解决方案

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

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

四、总结

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

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

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

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

更多推荐

“我升职的原因是:比同事更早学会这个知识”

本文发布于:2023-12-06 19:22:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1668554.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:升职   更早   同事   原因   知识

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!