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

相关文章
|
10天前
|
数据采集 存储 API
在信息时代,Python爬虫用于自动化网络数据采集,提高效率。
【7月更文挑战第5天】在信息时代,Python爬虫用于自动化网络数据采集,提高效率。基本概念包括发送HTTP请求、解析HTML、存储数据及异常处理。常用库有requests(发送请求)和BeautifulSoup(解析HTML)。基本流程:导入库,发送GET请求,解析网页提取数据,存储结果,并处理异常。应用案例涉及抓取新闻、商品信息等。
30 2
|
6天前
|
运维 数据安全/隐私保护 Python
Python基于telnetlib模块实现交换机全面巡检自动化运维项目
Python基于telnetlib模块实现交换机全面巡检自动化运维项目
40 14
|
5天前
|
数据采集 存储 监控
python 10个自动化脚本
【7月更文挑战第10天】
16 3
|
8天前
|
数据采集 数据处理 数据安全/隐私保护
Python的自动化脚本可以完成哪些任务?
【7月更文挑战第7天】Python的自动化脚本可以完成哪些任务?
19 3
|
13天前
|
测试技术 API 持续交付
【Python自动化测试】文章探讨了Python在测试领域的关键作用,分为三部分
【7月更文挑战第2天】【Python自动化测试】文章探讨了Python在测试领域的关键作用,分为三部分:1) 自动化测试的重要性与Python的易用性、库支持、跨平台和社区优势;2) Unittest作为标准测试框架的基础用法,及Pytest的灵活性与强大功能;3) 实践中包括Selenium的Web UI测试、Requests的API测试,强调测试隔离、持续集成等最佳实践。Python助力高效稳定的软件测试。
24 2
|
19天前
|
XML 测试技术 数据格式
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(下)
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(下)
29 3
|
19天前
|
Java 测试技术 程序员
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(上)
软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(上)
37 1
|
1天前
|
监控 jenkins 持续交付
Python进行自动化
【7月更文挑战第9天】 Python在自动化部署中发挥关键作用,提供如Fabric、Ansible、Docker SDK和Kubernetes Client等工具。自动化部署提高效率、减少错误,确保部署一致性和可控性。例如,Fabric库简化了远程服务器的部署任务,如在多台服务器上执行Git拉取和Docker容器启动。持续集成/部署(CI/CD)结合Jenkins和Fabric,实现代码变更自动构建、测试和部署。监控和持续改进是确保应用稳定性和质量的关键,通过定期回顾、度量分析以及有效监控系统来优化流程。
9 0
|
17天前
|
测试技术
Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
|
17天前
|
测试技术 Python
python接口自动化测试 - unittest框架suite、runner详细使用
python接口自动化测试 - unittest框架suite、runner详细使用