jsonschema在python自动化中的使用

简介: jsonschema在python自动化中的使用

之前在Java中记录过jsonschema相关的内容,传送门:

Json schema总结

最近由于工作的原因,语言转向了python,来整理了python中的jsonschema的使用和示例。

【jsonschema的应用场景】

一个知识点的存在,必定有其存在的意义,亦或是说使用价值,jsonschema也是一样。尤其是在json校验中,使用的非常广泛。因为是测试相关,于是整理了一下在自动化测试中的应用场景

  1. 可以做详细的接口返回值校验
  2. 可以做粗略的接口返回值校验
  3. 对于返回值比较多、数据量比较大的接口,做校验的优势更大。
  4. 适合校验方式更灵活的场景,例如长度校验、个数校验、枚举校验、类型校验、正则校验等等。

【python下的安装】


pip3 install jsonschema
可能需要额外安装的包:
    openapi-schema-validator
    openapi-spec-validator
主要用于格式校验,应对诸如以下报错:
    AttributeError: module jsonschema.exceptions has no attribute validationError

【导入方式】


import jsonschema

【python下的校验示例】


def schema_check(data, schema):
    try:
        jsonschema.validate(date, schema)
        print("data中的数据通过自定义的json schema校验")
    except jsonschema.exceptions.ValidationError as e;
        print(e.message, "data数据没有通过schema格式校验")

【jsonschema格式的简要示例参考】


schema = {
    "type": "object",  # 先声明每个键都是对象
    "properties": {  # 声明每个键对应的值的类型
        "version_no": {"type": "string"},
        "versions": {
            "type": "array", # 如果键对应的值是列表数据类型,则需要声明类型为array,然后再声明列表里面的键对应的值
            "minItems": 1,
            "items": {
                "type": "object",  # 字典对象
                "required": ["name", "type"], # 必填字段
                "properties": {  # 声明键对应的值的类型约束等
                    "name": {  
                        "type": "string",
                        "minLength": 1
                    },
                    "type": {
                        "type": "string",
                        "enum": ["python", "java"]
                    },
                    "size": {
                        "type": "number",  # 整型对应的是integer
                    },
                }
            }
        },
    },
    "required": ["version_no", "versions"]  # 最外围的键的约束
}

【校验中一些使用技巧】

  1. 对于较短的json串,可以采用精确校验的方式;
  2. 对于较长串,更适合采用粗略校验的方式;
  3. 在同一个串中,根据信息的重要程度,采取梯度校验的方式。

[参考链接]:

[1] http://json-schema.org/

[2] https://www.python100.com/html/LTFF0L3Q2992.html

相关文章
|
29天前
|
数据安全/隐私保护 Python
python之自动化进入CSDN
python之自动化进入CSDN
22 0
|
14天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
52 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
4天前
|
开发者 Python
使用Python实现自动化邮件通知:当长时程序运行结束时
本文介绍了如何使用Python实现自动化邮件通知功能,当长时间运行的程序完成后自动发送邮件通知。主要内容包括:项目背景、设置SMTP服务、编写邮件发送函数、连接SMTP服务器、发送邮件及异常处理等步骤。通过这些步骤,可以有效提高工作效率,避免长时间等待程序结果。
40 9
|
4天前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。
|
9天前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
35 2
|
11天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
27 3
|
10天前
|
数据采集 IDE 测试技术
Python实现自动化办公:从基础到实践###
【10月更文挑战第21天】 本文将探讨如何利用Python编程语言实现自动化办公,从基础概念到实际操作,涵盖常用库、脚本编写技巧及实战案例。通过本文,读者将掌握使用Python提升工作效率的方法,减少重复性劳动,提高工作质量。 ###
24 1
|
17天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
18天前
|
数据管理 程序员 数据处理
利用Python自动化办公:从基础到实践####
本文深入探讨了如何运用Python脚本实现办公自动化,通过具体案例展示了从数据处理、文件管理到邮件发送等常见办公任务的自动化流程。旨在为非程序员提供一份简明扼要的实践指南,帮助他们理解并应用Python在提高工作效率方面的潜力。 ####
|
18天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
下一篇
无影云桌面