使用假设从json模式生成测试数据
hypothesis-jsonschema的Python项目详细描述
假设jsonschema
a假设生成数据的策略 与一些json模式匹配。
API
公共api只包含一个函数:hypothesis\u jsonschema.from\u schema
,
它接受一个json模式并为允许的json对象返回一个策略。
还不支持使用"definitions"和"$ref"的模式重用,但是 草案04、05和07中的其他部分都经过了充分的测试和工作。
有关如何在测试中使用此策略的详细信息, 参见假设文档
支持的版本
假设jsonschema
不支持python 2,因为
它接近生命的尽头而python 3.6+是
更好的语言。如果您想更改此项,请与我联系
愿意为python 2付费或提供支持。
一般来说,0.x版本需要所有依赖项的最新版本 因为我不想处理兼容性解决方案。
假设jsonschema
可能随时进行向后不兼容的更改
在版本1.x之前-这就是Semver的意思!-但我保持了API的表面
小到可以避免的程度。休息的主要来源是
如果或者当从未真正起作用的模式变成显式错误时
生成不完全匹配的值。
假设和假设的专业支持 是否可以作为tidelift订阅。 Tidelift为软件开发团队提供了一个单一的采购来源, 维护他们的软件,由专家提供专业级别的保证 谁最清楚呢。
更改日志:
0.9.8-2019-08-24
- 已更正对具有未知值的
"format"
关键字的处理-自定义值 规范允许,应视为注释(即忽略)。
0.9.7-2019-08-15
- 改进了规范化,特别是对于深度嵌套的模式。
0.9.6-2019-08-02
- 空和布尔模式的性能优化,
它依赖于
jsonschema>;=3.0.2
0.9.5-2019-08-02
- 改进了对数组的
包含
关键字的处理
0.9.4-2019-07-01
- 改进了各种模式的规范化和合并, 像往常一样,它开启了显著的优化和性能 适用情况下的改进。
0.9.3-2019-06-13
类型
键的未来验证规范化。
0.9.2-2019-05-23
- 更好的内部规范化,使当前和未来 优化更广泛地适用。
- 又一个修正,这次是对负零和浮点数的修正 具有次整数精度。即使有假设,ieee 754也很棘手!
- 修复了对
enum
的处理,其中的元素不被基本架构允许, 用基本模式处理if-then-else和regex 在python中无效的模式。
0.9.1-2019-05-22
- 用
multipleof
和排他界限修正数值模式。
0.9.0-2019-05-21
- 支持合并重叠模式属性, 在大多数情况下,性能都有显著提高。
- 如果
"type"
键丢失,则现在是从其他键推断 而不是总是默认为"object"
- 修正了复杂数值边界的处理。
0.8.2-2019-05-21
- 提高对象模式的性能,其中最小和最大大小可以是
进一步受限于
属性
和属性名称
属性。
0.8.1-2019-03-24
- 支持带有最新版本的jsonschema的draft-04模式
0.8.0-2019-03-23
- 进一步改进了对具有基本模式的
allof
、oneof
和anyof
的支持 - 增加了对
依赖项的支持
- 处理重叠的模式属性
0.7.0-2019-03-21
- 现在需要
jsonschema
>;=3.0 - 改进了对
allof
、one of
和propertynames
的支持
- 支持
"type":[类型数组]
模式
- 假设4.11无警告
0.6.1-2019-02-23
- 修复连续交付配置(在出现潜在错误之前)
0.6.0-2019-02-23
- 支持条件子模式,即
if
,then
,else
关键字, 以及anyof
、allof
、oneof
和not
关键字。
0.5.0-2019-02-22
- 使用
jsonschema
3.0预发行版 - Draft06和Draft07的初始支持
0.4.2-2019-02-14
- 放弃了对
canonicaljson的依赖
- python 3.7上的警告较少
0.4.1-2019-02-06
- 在更宽松的Mozilla公共许可下重新授权,如假设
- 需要假设版本4.0或更高版本
- 修正了一个数组边界错误,其中
maxitems
和包含关键字
0.4.0-2018年11月25日
支持字符串格式(电子邮件、日期时间等)和
"包含"
数组关键字。
0.3.0-2018年11月25日
所有基本类型的良好支持。MVP.
0.2.0-2018年11月24日
对空、布尔、字符串和数字类型的推断。
0.1.0-2018年11月21日
在地上建立桩(生成任意json并过滤它!)
安全联系人信息
若要报告安全漏洞,请使用 Tidelift安全联系人。 Tidelift将协调修复和披露。