爆肝整理,python接口自动化测试整理,基础进阶一套打通...


前言

1、API测试怎么做?

如何应对复杂场景的 API 测试?

测试场景一:被测业务操作是由多个 API 调用协作完成

背景:一个单一的前端操作可能会触发后端一系列的 API 调用,此时 API 的测试用例就不再是简单的单个 API 调用,而是一系列 API 的调用。

存在情况:
1)存在后一个 API 需要使用前一个 API 返回结果的情况。
2)需要根据前一个 API 的返回结果决定后面应该调用哪个 API。

存在问题:
高效地获取单个前端操作所触发的 API 调用顺序

解决思路:
1)通过抓包,获取前端操作时所触发的 API 调用顺序。
2)通过用户行为日志,通过大数据手段来获取调用顺序。

测试场景二:API 测试过程中的第三方依赖

背景:API 之间存在依赖关系的,比如你的被测对象是 API A,但是 API A 的内部调用了 API B,此时如果由于某种原因,API B 在被测环境中处于不可用状态,那么 API A 的测试就会受到影响。

解决思路:
启动 Mock Server 来代替真实的 API

测试场景三:异步 API 的测试

什么是异步 API?

调用后会立即返回,但是实际任务并没有真正完成,而是需要稍候去查询或者回调的 API

对异步 API 的测试主要分为两个部分:
1)测试异常调用是否成功:检查返回值和后台工作线程是否被创建两个方面。

2)测试异步调用的业务逻辑处理是否正确。

测试异步调用的业务逻辑复杂性:

因为异步 API 通常发生在一些比较慢的操作上,比如数据 I/O、消息队列 I/O 等,此时测试往往需要去验证数据库中的值、消息队列中的值等,这就需要测试代码具有访问和操作数据库或者消息队列的能力。

在实际工程项目中,这些能力一般会在测试框架级别提供,也就是说 API 测试框架中包含对应的工具类去访问数据库或者消息队列。

2、mock 测试技术

mock 简介:

mock 技术主要分为两类:
mock服务:实现 mock 功能的一个服务
mock数据:mock 一个对象,写入一些预期值

mock 模块是 Python 的测试框架 unittest 下的一个子库,可以模拟一个方法、一个对象或者一个类,然后使用模拟的对象替换系统的一部分,对系统的一个单元进行测试,并对它们已使用的方式进行断言。

场景:比如有 A 和 B 两个模块,A 模块中有调用到 B 模块的方法,但是现在 B 模块中被 A 模块调用的方法需要修改,而我们又不想让它影响 A 模块的功能测试,所以就用到了单元测试模块 unittest 中的 mock 模块,mock 模块就是模拟出一个假的 B 模块供 A 模块测试用。

3、JSON 处理技巧

JSON:一种轻量级的数据交换格式,一般接口返回的数据类型都是JSON。

JSON的定义格式与字典相同,也是键值对方式,如{key:value}。其实 JSON 是字符串,由于字符串不能用 key、value 来取值,所以要先转换为字典才可以。

JSON 模块常用的四个方法:

1)json.dumps():将 Python 任意对象转换成 string 对象

def json_dumps_demo():
    test_list = [1, 2, 3]
    print(type(json.dumps(test_list)))  # 打印结果为:str

    test_dict = {"name": "test", "age": 10}
    print(type(json.dumps(test_dict)))  # 打印结果为:str

    test_int = 99
    print(type(json.dumps(test_int)))  # 打印结果为:str

2)json.loads():将 string 对象转换成 python 对象

def json_loads_demo():
    string_list = "[1, 2, 3]"
    print(type(json.loads(string_list)))  # 打印结果为:list

    string_dict = '{"name": "test", "age": 10}'
    print(type(json.loads(string_dict)))  # 打印结果为:dict

    string_int = "99"
    print(type(json.loads(string_int)))  # 打印结果为:int

3)json.dump():序列化,将Python对象序列化成JSON格式并写入文件

def json_dump_demo():
  test_dict = {"name": "test", "age": 10}
  with open("json_test.json", "w") as fp:
    json.dump(test_dict, fp, indent="\t", ensure_ascii=False)

4)json.load():反序列化,从JSON文件中读取数据并将其反序列化为Python对象

def json_load_demo():
  with open("json_test.json", "r") as fp:
    data = json.load(fp)
  print(type(data))  # 打印结果为:dict

总结:
序列化和反序列化:数据转换的两个互逆过程,用于在不同呢环境中传递和存储数据

序列化:将对象的状态信息转换为可存储或传输的格式,例如字节流、JSON字符串或XML文档;目的:将复杂的数据结构转换成已存储、传输和共享的格式

反序列化:将序列化后的数据转换回原始的对象或数据结构;目的:重建对象的状态,以便程序能够使用它

类比:
序列化(dump):将乐高模型(高级数据类型)拆解成各个零件(字符串)

反序列化(load):将各个零件(字符串)组装成乐高模型(高级数据类型)

json.dump()、json.dumps():序列化,将Python对象转换成JSON字符串
json.load()、json.loads():反序列化,将JSON字符串转换成Python对象
* 带 s 的都是和字符串相关,不带 s 的和文件相关

最全Python自动化测试进阶之路视频教学 (全集)

下面是我整理的2025年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

人生最动人的风景,往往藏在最难攀爬的高处。当你觉得力竭时,请记住:每一次坚持都在雕刻更强大的自己。别问路有多远,只管迈步向前;别怕山有多高,向上攀登就是答案!

你体内沉睡着改变世界的力量!每个清晨都是改写命运的新机会,每次挫折都是精心包装的礼物。当全世界都在说"不可能"时,正是你证明"可能"的最好时机!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值