有人能帮助我了解如何使用RobotFramework通过JSON-Schema验证json响应吗?
理想情况下,通过http请求外部引用json-schema:示例http://api-bl-uk.northeurope.cloudapp.azure.com/api/v1/crm/schemas/contact
pip install robotframework pip install robotframework-jsonvalidator pip install robotframework-jsonschemalibrary robot .\mytest.robot
Library JsonValidator Library JSONSchemaLibrary schemas *** Test Cases *** My Test Case: Validate Json service.schema.json {"foo": "bar"}
当我做测试的时候...
$ robot .\mytest.robot ============================================================================== Mytest ============================================================================== My Test Case: | FAIL | No keyword with name 'Validate Json' found. ------------------------------------------------------------------------------ Mytest | FAIL | 1 critical test, 0 passed, 1 failed 1 test total, 0 passed, 1 failed ============================================================================== Output: E:\GitLab\customer-api\test\output.xml Log: E:\GitLab\customer-api\test\log.html Report: E:\GitLab\customer-api\test\report.html
所以我似乎错过了一个相当基本的谜题:
找不到名为“Validate JSON”的关键字
*** Settings *** Library JSONSchemaLibrary schemas *** Test Cases *** My Test Case: Validate Json service.json {"foo": "bar"}
我不确定这是否适用于您正在使用的库,但我正在使用库jsonschema
(https://python-jsonschema.readthedocs.io/)。
我提出了两种从文件中使用模式的方法。我会选择第一个。
在virtualenv中,运行PIP install JSONSchema
。
*** Settings ***
# For the "Get Binary File" task
Library OperatingSystem
# For the "validate" task
Library jsonschema
*** Test Cases ***
Load json schema from file, and validate json
# Load the file as a string, usually sufficent for most methods, but not validate() below
${schema} Get Binary File ./mySchema.json
# Load the string as a binary object, you could then use this like ${schema}[someProperty] if you wanted to
${schema} evaluate json.loads('''${schema}''') json
# Do a simple validation, using the schema, and your json data. Remember ${instance} needs to be a json object, not just some string
${instance} evaluate json.loads('''{"someField":[1,2,3]}''') json
validate instance=${instance} schema=${schema}
*** Settings ***
# For the "Get Binary File" task
Library OperatingSystem
# For the "validate" task
Library jsonschema
*** Test Cases ***
Load json schema from file, and validate
# Create a schema
${schema} concat
... {
... "type": "object",
... "properties": {"$ref": "file:/absolute/path/to/mySchema.json"}
... }
${schema} evaluate json.loads('''${schema}''') json
# Do a simple validation, using the schema, and your json data. Remember ${instance} needs to be a json object, not just some string
${instance} evaluate json.loads('''{"someField":[1,2,3]}''') json
validate instance=${instance} schema=${schema}
如果要从外部源获取架构文件,请查看请求库。类似于:
*** Settings ***
Library RequestsLibrary
*** Test Cases ***
Test case
Create Session yourSession http://localhost
${file} Get Request yourSession /filename
在这里输入image description我有一个如下所示的json模式,我希望根据B和C的值将定义加载到D和E中,为此我已经编写了所有的条件。我使用json-schema-validator在应用程序中进行json模式验证。 javaCode看起来像
考虑到模式和(反)序列化框架的可用性,我认为构建一个能够实现以下功能的系统是很简单的: 它通过HTTP get请求接收输入 将其转换/解析/反序列化为python对象 验证给定公共模式语言描述的python对象 对参数进行一些操作以获取结果数据 将结果数据序列化为JSON 验证结果 归还它 我想使用一种语言不可知的模式语言——任何只在一种语言中使用的语言。我将avro和json模式视为模式语言和(
JsonSchema.net是一个从JSON数据自动生成JSON Schema的工具. 模式生成根据 IETF JSON Schema Internet Draft. 草案规范, 此工具包括5个主要功能: 接受JSON输入,并根据此输入生成秒速此JSON输入的JSON Schema Provides a GUI to modify the schema generated with useful
我正在使用Jackson模块的最新分支-jackson-mode-jsonSchema,即2.4.4-Snapshot。 我试图使用@JsonPropertyOrder注释来维护POJO属性的顺序,但它似乎不尊重注释。 我的POJO示例如下- 杰克逊代码如下- Json输出如下- 有人能建议我是否做错了什么,或者我们需要在杰克逊身上打开一个问题,因为我看到这种问题已经在2.3.2(https://
问题内容: 问题已经解决了这里,但没有工作,我(不相同的弹簧引导版本我猜)本 尝试编写自定义约束验证器代码,以在保留之前检查帐户电子邮件是否存在。 // ------------------------------------------------ -------------------------- // --------------------------------------------
问题已经在这里解决了,但对我不起作用(我猜不是同一个Spring启动版本) 尝试编写自定义约束验证器,在持久化之前检查帐户电子邮件是否存在。 // -------------------------------------------------------------------------- // ------------------------------------------------