为什么你传的测试数据格式总是不对?
在自动化测试当中,我们会以各种形式去存储测试用例数据。比如 Excel比如 YAML ,或者是一个 py 文件:不管是通过什么格式得到数据,最终都会被转成一个编程语言能够识别的对象。比如在 python 当中进行接口测试,上面的数据最终可以...
在自动化测试当中,我们会以各种形式去存储测试用例数据。
比如 Excel

比如 YAML ,

或者是一个 py 文件:
不管是通过什么格式得到数据,最终都会被转成一个编程语言能够识别的对象。比如在 python 当中进行接口测试,上面的数据最终可以转换成 python 的字典对象。
同时,在其他数据转成 python 对象的时候,我们还可能对数据进行校验,比如不能有其他的字段传入,如果传入其他的字段,就要在数据传入之前过滤掉。
使用 marshmallow 序列化和数据校验
marshmallow 是一个非常优秀的 python 序列化工具,也能进行数据校验。marshmallow 吸收了 django rest framework, flask RESTFul 等优秀框架的思想,API 简单易用,不和任何平台或框架绑定。
只要是在 python 当中进行序列化或者数据校验,都可以考虑 marshmallow。
序列化(Serialization)
序列化是指把编程语言的对象转化成通用的数据,比如把对象转化成二进制流,或者在 Web 应用中把对象转化成 JSON 等通用格式,在 marshmallow 中用 dump 进行序列化。
使用 marshmallow 进行序列化:
-
1,编写 Schema ,用于数据转化
-
2,准备需要序列化的对象
-
3,使用 marshmallow.dump 进行序列化


-
UserSchema 中的字段名称和 User 的属性名称一致
-
fields.Str() 表示字段必须能够转化成字符串。fields.Int() 必须能转化成整型
-
当因为 fields 类型不满足序列化失败的时候,会抛出 ValueError 异常
反序列化(Deserialization)

如果是要对 JSON 字符串进行校验,可以使用 loads 方法。

required 参数

测试当中的应用
-
如果你的测试数据存在外部,可以使用反序列化转成 python 对象,并且会对数据进行校验
-
如果你已经有 python 对象,需要转化成通用格式比如 JSON,使用序列化。
说明:本文为柠檬班雨泽老师原创,转载需注明出处
如果想要获取更多软件测试相关资料信息,可以加入我们柠檬班软件测试讨论群QQ:972956275;或者微信:13327216815
海量课程,专业讲师等着你~