用序列化思想为自动化测试「提供动力」

news2024/11/26 17:44:03

Python 对象序列化技术

对象序列化是指将对象从内存转换为字节流的过程,以实现对象的持久化存储和网络传输。它在许多场景中都非常重要,比如远程调用、长期数据存储等。

在Python中,我们主要使用pickle和marshal这两个模块来实现对象的序列化和反序列化。我们来看看这两个模块的工作原理以及优缺点对比。

同时,在这我准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺这份测试文档资料也打包在里面啦,免费领取!

软件测试视频教程观看处:

【B站最系统自动化测试教程】整整400集,从入门到项目实战,只需18天,手把手带你进阶自动化测试!!!

在自动化测试中的应用

测试数据存储和读取

  • 自动化测试通常需要大量测试数据作为输入。对象序列化可以对测试数据进行存储和读取,方便测试数据的管理和重复利用。

  • 例如使用pickle将测试用例的输入输出数据序列化到文件中,测试执行时直接加载这些序列化的数据进行测试。

测试结果检查

  • 测试执行完成后,可以将测试运行期间产生的结果对象通过序列化的方式存储下来。

  • 后续可以对比实际结果与存储的期望结果进行验证。

远程测试

  • 对象序列化技术可以支持将测试用例和测试框架等对象在不同计算节点之间进行传输,实现集中式的远程测试。

测试环境重播

  • 通过对象序列化可以将测试环境中对象的状态持久化存储下来。以后可以直接加载这些状态来重放测试场景。

自动化框架模块化

  • 对象序列化可以实现自动化测试框架的封装和解耦。比如将各个测试模块和plugin以序列化的方式集成到框架中。

功能回归测试

  • 将历史测试通过和结果对象持久化下来,就可以实现随时执行历史功能点的回归测试。

对象序列化技术可以为自动化测试提供数据管理,结果检查,环境管理,远程执行以及回归测试等多种功能,在自动化测试过程中广泛应用。

pickle 模块

pickle模块可以将广泛的数据类型如字典、列表、对象实例等序列化和反序列化。

import pickle

data = {
  'a': [1, 2.0, 3],
  'b': 'hello'
}

with open('data.pkl', 'wb') as f:
  pickle.dump(data, f)
  
with open('data.pkl', 'rb') as f:
  data2 = pickle.load(f)
  
print(data2)  

它通过保存和提取对象的状态实现深度克隆。

marshal 模块

marshal模块也能实现对象的序列化,但它只支持Python内置的数据类型如数字、字符串等。

import marshal

data = [1, 2.0, "hello"] 

with open('data.marshal', 'wb') as f:
  marshal.dump(data, f)
  
with open('data.marshal', 'rb') as f:
  data2 = marshal.load(f)
  
print(data2)

它通过直接保存对象在内存中的二进制表示实现序列化。

将函数序列化

我们也可以将函数本身当作对象进行序列化。

import pickle
import marshal

def test():
  print(123)
  
with open('func.pkl', 'wb') as f:
  pickle.dump(test, f)
  
with open('func.marshal', 'wb') as f:
  marshal.dump(test, f)

通过加载函数定义本身实现了函数的持久化。

对比

marshal 和 pickle是Python中两种常用的对象序列化模块,它们各有优缺点:

pickle的优点:

  • 支持广泛的数据类型,可以序列化最基本的数据类型以及用户自定义的数据类型。

  • 兼容性好,可以在不同Python版本之间进行序列化和反序列化。

  • 更友好,支持持久化整个对象状态。

marshal的优点:

  • 速度更快,生成的序列化数据体积更小。

  • 只支持Python内置数据类型,不支持自定义类等。

pickle的缺点:

  • 安全性较低,可能因为外部输入数据恶意构造而导致 segurança 漏洞。

  • 兼容性不错但是并不完美,在不同版本间可能因为API更改而出现问题。

marshal的缺点:

  • 只支持Python内置类型,不适用于持久化完整对象状态。

  • 不同平台或者Python版本间不一定兼容。

总体来说

  • 如果需要跨平台/版本兼容或持久化完整对象,建议使用pickle。

  • 如果只在同一环境下进行快速序列化,且数据体积要求小,使用marshal效率会高一些。

  • 安全性要求高的场景下不推荐使用pickle,可能需要探索其他替代方案。

所以两者选择取决于项目实际需求,如兼容性、效率、安全等不同重点考虑。

总结

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

【银行测试】第三方支付平台业务流,功能/性能/安全测试方法...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、第三方支付平台…

vue+echarts实现桑吉图的效果

前言: 在我们项目使用图形的情况下,桑吉图算是冷门的图形了,但是它可以实现我们对多级数据之间数据流向更好的展示的需求,比如,我们实际数据流向中,具有1对多,多对多的情况下,如果用…

2023年淘宝天猫年终惊喜红包玩法

2023年淘宝天猫年终惊喜红包玩法,2023年淘宝年终好价节红包活动 随着2023年的尾声渐近,淘宝再次为广大用户带来了年终的惊喜——一场特别的红包活动。从12月8日零时开始,直至12月12日的午夜,淘宝app将开启一个为期五天的年终好价节…

Web前端工程的装机必备软件

前言 最近作者的电脑 C 盘变红了,这让我很难受(有点小强迫症),所以准备重新安装下系统,顺便把 C 盘扩大点。 注意: 操作系统是 windows 11 23H2。 所有的命令行都是使用 Windows Terminal 中进行的。 安装 Windows Terminal 由于…

L1-026:I Love GPLT

题目描述 这道超级简单的题目没有任何输入。 你只需要把这句很重要的话 —— “I Love GPLT”——竖着输出就可以了。 所谓“竖着输出”,是指每个字符占一行(包括空格),即每行只能有1个字符和回车。 输入样例: 无输出样…

arm 交叉编译器版本下载

网址:https://releases.linaro.org/components/toolchain/binaries/ 根据板子架构选择正确的编译器 根据你主机架构选择对应的版本(就是你的开发电脑架构)

ROS小练习——服务调用

目录 一、服务名称与消息的获取 二、代码案例 1、C 2、python 三、编译运行 1、配置cmakelist 2、运行 一、服务名称与消息的获取 rosservice list rosservice type /spawn rossrv info turtlesim/Spawn 二、代码案例 1、C //包含头文件 #include "ros/ros.h&qu…

Linux AMH服务器管理面板本地安装与远程访问

最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 1. Linux 安装AMH 面板2. 本地访问AMH 面板3. Linux安装…

MySQL和MongoDB简介以及它们之间的区别

本文主要介绍MySQL和MongoDB的简介以及它们之间的区别。 目录 MySQL简介MySQL的优缺点MySQL的应用场景MongoDB简介MongoDB的优缺点MongoDB的应用场景MySQL和MongoDB的区别 MySQL简介 MySQL是一种开源的关系型数据库管理系统,是世界上最流行的数据库之一。它支持多用…

UVM:UVM的树形结构

UVM采用树形的组织结构来管理验证平台的各个部分。sequencer、driver、monitor、agent、model、 scoreboard、env等都是树的一个结点。为什么要用树的形式来组织呢?因为作为一个验证平台,它必须能够掌握自己治下的所 有“人口”,只有这样做了…

温度而知新,一文读懂Java知识文集精华版。

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

SL1581降压恒压 耐压4V-30V降压5V 2A电流 外围简单,四个元器件

SL1581是一款专为降压恒压应用而设计的芯片,具有耐压4V-30V、降压5V、2A电流输出等特点,外围电路简单,仅需四个元器件。 一、芯片介绍 SL1581是一款专为降压恒压应用而设计的芯片,它采用先进的PWM控制技术,具有高效率、…

Google 发布最强大模型Gemini,能力与GPT-4相当

一、Gemini 介绍 Gemini 是一个多模式模型系列,在图像、音频、视频和文本领域展示了真正强大的功能。其中功能最强大的模型 Gemini Ultra 在 32 个基准测试中的 30 个中提升了最先进水平,其中包括 12 个流行文本和推理基准测试中的 10 个、9 个图像理解…

情感分析简化:使用python中的TextBlob库轻松分析文本情感

导语:在当今社交媒体和大数据时代,了解人们对于产品、服务或事件的情感倾向变得至关重要。TextBlob库作为一个简单易用的自然语言处理工具,提供了强大的情感分析功能,帮助我们更深入地理解文本背后的情感。本文将介绍TextBlob库的…

Python3+RIDE+RobotFramework自动化测试框架搭建过程详解

一、Python安装 最新版Python下载地址:https://www.python.org/ 根据操作系统选择对应版本制品下载安装即可,本机用的是Windows x86-64 executable installer。 注意事项: 安装完成后检查下环境变量,默认会配置好,可…

HarmonyOS开发(十):通知和提醒

1、通知概述 1.1、简介 应用可以通过通知接口发送通知消息,终端用户可以通过通知栏查看通知内容,也可以点击通知来打开应用。 通知使用的的常见场景: 显示接收到的短消息、即使消息...显示应用推送消息显示当前正在进行的事件&#xff0c…

2024黑龙江省职业院校技能大赛信息安全管理与评估赛项规程

2024黑龙江省职业院校技能大赛暨国赛选拔赛 “GZ032信息安全管理与评估”赛项规程 极安云科专注技能竞赛,包含网络建设与运维和信息安全管理与评估两大赛项,及各大CTF,基于两大赛项提供全面的系统性培训,拥有完整的培训体系。团队…

Python实现广义线性回归模型(statsmodels GLM算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 广义线性模型(Generalized Linear Model,简称GLM)是一种广泛应用于回归分析和分类问题的统…

中通快递查询,中通快递单号查询,筛选出指定派件员的单号

批量查询中通快递单号的物流信息,将指定派件员的单号筛选出来。 所需工具: 一个【快递批量查询高手】软件 中通快递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,并登录 步骤2:点击主界面左上…

工业交换机的内部结构和工作原理,你了解多少?

工业交换机由许多小组件构造而成,因此,为了更全面地了解和认识工业交换机,我们需要了解其内部结构和工作原理。 工业交换机的内部结构: 1、主板,也被称为背板,是计算机的核心部件之一。 为各业务接口和数…