Я не уверен, будет ли это работать с используемой вами библиотекой, но я использую библиотеку jsonschema
(https://python -jsonschema.readthedocs.io / ).
Есть два способа использования схемы из файла.Я бы пошел с первым.
Первый путь
В вашем virtualenv запустите pip install jsonschema
.
Затем создайте новый файл, mySchema.json
в том же каталогекак ваш файл теста.Файл теста:
*** 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}
Второй способ
В вашем virtualenv запустите pip install jsonschema
.
Затем создайте новый файл, mySchema.json
в том же каталоге, что ифайл вашего тестаФайл тестового примера:
*** 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