Подтверждение JSON с JSonschema и роботизированной рамой

Может ли кто-нибудь помочь мне начать с того, как использовать RobotFramework для проверки ответов JSON с помощью JSON-схемы?

В идеале на json-схему внешне ссылаются через http-запрос: Пример http://api-bl-uk.northeurope.cloudapp.azure.com/api/v1/crm/schemas/contact

Прогресс на данный момент:

pip install robotframework
pip install robotframework-jsonvalidator
pip install robotframework-jsonschemalibrary
робот.\mytest.robot

куда mytest.robot является:

Библиотека JsonValidator
Библиотека JSONSchemaLibrary схемы
*** Тестовые случаи ***
  Мой тестовый пример:
   Проверьте Json  service.schema.json  {"foo": "bar"}

У меня есть схема в подкаталоге schemas называется service.json

Когда я запускаю тест, я получаю...

$ robot.\mytest.robot
================================================== ============================
MyTest
================================================== ============================
Мой тестовый пример:                                                         | FAIL |
Не найдено ни одного ключевого слова с именем "Validate Json".
------------------------------------------------------------------------------
Mytest                                                                | FAIL |
1 критический тест, 0 пройден, 1 не пройден
1 тест всего, 0 пройдено, 1 не пройдено
================================================== ============================
Вывод:  E:\GitLab\customer-api\test\output.xml
Журнал:     E:\GitLab\customer-api\test\log.html
Отчет:  E:\GitLab\customer-api\test\report.html

Кажется, мне не хватает довольно простой части головоломки:

Не найдено ни одного ключевого слова с именем "Validate Json"

ОБНОВИТЬ

Проблемы слепого следования "образцу кода"

Проблема была в том, что мне не хватало *** Settings *** заголовок до Library операторы, а также имя используемой схемы было неверным (легко решить после исправления заголовка).

Полный пример:

*** Настройки ***
Библиотека JSONSchemaLibrary схемы

*** Тестовые случаи ***
Мой тестовый пример:
    Проверьте Json  service.json  {"foo": "bar"}

Теперь... Как я могу использовать файлы схемы с внешними ссылками? Квест продолжается!

:)

0 ответов

Я не уверен, будет ли это работать с используемой вами библиотекой, но я использую библиотеку 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
Другие вопросы по тегам