Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Postman "Schema Valid" как проверить Response с документацией



Software-Testing.Ru - портал тестировщиков  

Новые темы форума тестировщиков


Postman "Schema Valid" как проверить Response с документацией
2019-12-21 19:18

Всем привет  :victory:

Пытаюсь сравнить структуру ответа в postman с документацией (нужно проверить тип полей)

В ответ приходит сообщение, которое может иметь 0 или несколько файлов и квитанций структура у всех прикрепленных файлов или квитанций одинаковая, но их количество постоянно меняется, т.к. сообщение приходит рандомное.

Пример Response:

            "Message": null,
            "Files": []
        },
        {
            "Id": "string",
            "ReceiveTime": "string",
            "StatusTime": "string",
            "Status": "error",
            "Message": "string",
            "Files": [
                {
                    "Id": "string",
                    "Name": "string",
                    "Description": null,
                    "Size": "integer",
                    "RepositoryInfo": [
                        {
                            "Path": "string",
                            "Host": "string",
                            "Port": "integer",
                            "RepositoryType": "string"
                        }
                    ]
                },
                {
                    "Id": "string",
                    "Name": "string",
                    "Description": null,
                    "Size": "integer",
                    "RepositoryInfo": [
                        {
                            "Path": "string",
                            "Host": "string",
                            "Port": "integer",
                            "RepositoryType": "string"
                        }
                    ]
                },
                {
                    "Id": "string",
                    "Name": "string",
                    "Description": null,
                    "Size": "integer",
                    "RepositoryInfo": [
                        {
                            "Path": "string",
                            "Host": "string",
                            "Port": "integer",
                            "RepositoryType": "string"
                        }
                    ]
                },
                {
                    "Id": "string",
                    "Name": "string",
                    "Description": null,
                    "Size": "integer",
                    "RepositoryInfo": [
                        {
                            "Path": "string",
                            "Host": "string",
                            "Port": "integer",
                            "RepositoryType": "string"
                        }
                    ]
                }
            ]
        }
    ]
}

Через это https://www.jsonschema.net/  я преобразую , во что, сам не знаю, но так работает ))))), и после кидаю схему в postman test:

var schema = {
  "definitions": {},
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "http://example.com/root.json",
  "type": "object",
  "title": "The Root Schema",
  "required": [
    "Id",
    "CorrelationId",
    "GroupId",
    "Type",
    "Title",
    "Text",
    "CreationDate",
    "UpdatedDate",
    "Status",
    "TaskName",
    "RegNumber",
    "TotalSize",
    "Sender",
    "Files",
    "Receipts"
  ],
  "properties": {
    "Id": {
      "$id": "#/properties/Id",
      "type": "string",
      "title": "The Id Schema",
      "default": "",
      "examples": [
        "string"
      ],
      "pattern": "^(.*)$"
    },
    "CorrelationId": {
      "$id": "#/properties/CorrelationId",
      "type": "null",
      "title": "The Correlationid Schema",
      "default": null,
      "examples": [
        null
      ]
    },
    "GroupId": {
      "$id": "#/properties/GroupId",
      "type": "null",
      "title": "The Groupid Schema",
      "default": null,
      "examples": [
        null
      ]
    },
    "Type": {
      "$id": "#/properties/Type",
      "type": "string",
      "title": "The Type Schema",
      "default": "",
      "examples": [
        "outbox"
      ],
      "pattern": "^(.*)$"
    },
    "Title": {
      "$id": "#/properties/Title",
      "type": "string",
      "title": "The Title Schema",
      "default": "",
      "examples": [
        "string"
      ],
      "pattern": "^(.*)$"
    },
    "Text": {
      "$id": "#/properties/Text",
      "type": "string",
      "title": "The Text Schema",
      "default": "",
      "examples": [
        "string"
      ],
      "pattern": "^(.*)$"
    },
    "CreationDate": {
      "$id": "#/properties/CreationDate",
      "type": "string",
      "title": "The Creationdate Schema",
      "default": "",
      "examples": [
        "string"
      ],
      "pattern": "^(.*)$"
    },
    "UpdatedDate": {
      "$id": "#/properties/UpdatedDate",
      "type": "string",
      "title": "The Updateddate Schema",
      "default": "",
      "examples": [
        "string"
      ],
      "pattern": "^(.*)$"
    },
    "Status": {
      "$id": "#/properties/Status",
      "type": "string",
      "title": "The Status Schema",
      "default": "",
      "examples": [
        "error"
      ],
      "pattern": "^(.*)$"
    },
    "TaskName": {
      "$id": "#/properties/TaskName",
      "type": "string",
      "title": "The Taskname Schema",
      "default": "",
      "examples": [
        "string"
      ],
      "pattern": "^(.*)$"
    },
    "RegNumber": {
      "$id": "#/properties/RegNumber",
      "type": "null",
      "title": "The Regnumber Schema",
      "default": null,
      "examples": [
        null
      ]
    },
    "TotalSize": {
      "$id": "#/properties/TotalSize",
      "type": "string",
      "title": "The Totalsize Schema",
      "default": "",
      "examples": [
        "integer"
      ],
      "pattern": "^(.*)$"
    },
    "Sender": {
      "$id": "#/properties/Sender",
      "type": "object",
      "title": "The Sender Schema",
      "required": [
        "Inn",
        "Ogrn",
        "Bik",
        "RegNum",
        "DivisionCode"
      ],
      "properties": {
        "Inn": {
          "$id": "#/properties/Sender/properties/Inn",
          "type": "string",
          "title": "The Inn Schema",
          "default": "",
          "examples": [
            "integer"
          ],
          "pattern": "^(.*)$"
        },
        "Ogrn": {
          "$id": "#/properties/Sender/properties/Ogrn",
          "type": "null",
          "title": "The Ogrn Schema",
          "default": null,
          "examples": [
            null
          ]
        },
        "Bik": {
          "$id": "#/properties/Sender/properties/Bik",
          "type": "null",
          "title": "The Bik Schema",
          "default": null,
          "examples": [
            null
          ]
        },
        "RegNum": {
          "$id": "#/properties/Sender/properties/RegNum",
          "type": "null",
          "title": "The Regnum Schema",
          "default": null,
          "examples": [
            null
          ]
        },
        "DivisionCode": {
          "$id": "#/properties/Sender/properties/DivisionCode",
          "type": "null",
          "title": "The Divisioncode Schema",
          "default": null,
          "examples": [
            null
          ]
        }
      }
    },
    "Files": {
      "$id": "#/properties/Files",
      "type": "array",
      "title": "The Files Schema",
      "items": {
        "$id": "#/properties/Files/items",
        "type": "object",
        "title": "The Items Schema",
        "required": [
          "Id",
          "Name",
          "Description",
          "Encrypted",
          "SignedFile",
          "Size",
          "RepositoryInfo"
        ],
        "properties": {
          "Id": {
            "$id": "#/properties/Files/items/properties/Id",
            "type": "string",
            "title": "The Id Schema",
            "default": "",
            "examples": [
              "string"
            ],
            "pattern": "^(.*)$"
          },
          "Name": {
            "$id": "#/properties/Files/items/properties/Name",
            "type": "string",
            "title": "The Name Schema",
            "default": "",
            "examples": [
              "string"
            ],
            "pattern": "^(.*)$"
          },
          "Description": {
            "$id": "#/properties/Files/items/properties/Description",
            "type": "null",
            "title": "The Description Schema",
            "default": null,
            "examples": [
              null
            ]
          },
          "Encrypted": {
            "$id": "#/properties/Files/items/properties/Encrypted",
            "type": "boolean",
            "title": "The Encrypted Schema",
            "default": false,
            "examples": [
              true
            ]
          },
          "SignedFile": {
            "$id": "#/properties/Files/items/properties/SignedFile",
            "type": "null",
            "title": "The Signedfile Schema",
            "default": null,
            "examples": [
              null
            ]
          },
          "Size": {
            "$id": "#/properties/Files/items/properties/Size",
            "type": "string",
            "title": "The Size Schema",
            "default": "",
            "examples": [
              "integer"
            ],
            "pattern": "^(.*)$"
          },
          "RepositoryInfo": {
            "$id": "#/properties/Files/items/properties/RepositoryInfo",
            "type": "array",
            "title": "The Repositoryinfo Schema",
            "items": {
              "$id": "#/properties/Files/items/properties/RepositoryInfo/items",
              "type": "object",
              "title": "The Items Schema",
              "required": [
                "Path",
                "Host",
                "Port",
                "RepositoryType"
              ],
              "properties": {
                "Path": {
                  "$id": "#/properties/Files/items/properties/RepositoryInfo/items/properties/Path",
                  "type": "string",
                  "title": "The Path Schema",
                  "default": "",
                  "examples": [
                    "string"
                  ],
                  "pattern": "^(.*)$"
                },
                "Host": {
                  "$id": "#/properties/Files/items/properties/RepositoryInfo/items/properties/Host",
                  "type": "string",
                  "title": "The Host Schema",
                  "default": "",
                  "examples": [
                    "string"
                  ],
                  "pattern": "^(.*)$"
                },
                "Port": {
                  "$id": "#/properties/Files/items/properties/RepositoryInfo/items/properties/Port",
                  "type": "string",
                  "title": "The Port Schema",
                  "default": "",
                  "examples": [
                    "integer"
                  ],
                  "pattern": "^(.*)$"
                },
                "RepositoryType": {
                  "$id": "#/properties/Files/items/properties/RepositoryInfo/items/properties/RepositoryType",
                  "type": "string",
                  "title": "The Repositorytype Schema",
                  "default": "",
                  "examples": [
                    "string"
                  ],
                  "pattern": "^(.*)$"
                }
              }
            }
          }
        }
      }
    },
    "Receipts": {
      "$id": "#/properties/Receipts",
      "type": "array",
      "title": "The Receipts Schema",
      "items": {
        "$id": "#/properties/Receipts/items",
        "type": "object",
        "title": "The Items Schema",
        "required": [
          "Id",
          "ReceiveTime",
          "StatusTime",
          "Status",
          "Message",
          "Files"
        ],
        "properties": {
          "Id": {
            "$id": "#/properties/Receipts/items/properties/Id",
            "type": "string",
            "title": "The Id Schema",
            "default": "",
            "examples": [
              "string"
            ],
            "pattern": "^(.*)$"
          },
          "ReceiveTime": {
            "$id": "#/properties/Receipts/items/properties/ReceiveTime",
            "type": "string",
            "title": "The Receivetime Schema",
            "default": "",
            "examples": [
              "string"
            ],
            "pattern": "^(.*)$"
          },
          "StatusTime": {
            "$id": "#/properties/Receipts/items/properties/StatusTime",
            "type": "string",
            "title": "The Statustime Schema",
            "default": "",
            "examples": [
              "string"
            ],
            "pattern": "^(.*)$"
          },
          "Status": {
            "$id": "#/properties/Receipts/items/properties/Status",
            "type": "string",
            "title": "The Status Schema",
            "default": "",
            "examples": [
              "string"
            ],
            "pattern": "^(.*)$"
          },
          "Message": {
            "$id": "#/properties/Receipts/items/properties/Message",
            "type": "null",
            "title": "The Message Schema",
            "default": null,
            "examples": [
              null
            ]
          },
          "Files": {
            "$id": "#/properties/Receipts/items/properties/Files",
            "type": "array",
            "title": "The Files Schema"
          }
        }
      }
    }
  }
}
pm.test('Shema Valid', () => {
    var carrier = JSON.parse(responseBody); 
    pm.expect(tv4.validate(carrier, schema)).to.be.true
}) 

В схеме большинство полей удаляю, оставляю только поле type, пример:

"Message": {
   "type": "null",
  }

Теперь вопросы:

1) Есть ли способ проще в написании чем выбрал я c написанием этой схемы(https://www.jsonschema.net/)? 

2) Как сделать проверку файлов, квитанций, если их будет 10-20шт, не дублируя их? через цикл? а эта схема(https://www.jsonschema.net/), на сколько я понимаю не съест цикл javascript-a 

2) Правильную ли я выбрал форму проверки в postman-e?

3) Если поля обязательные или необязательные, как это прописать в тесте(pm.expect(tv4.validate(carrier, shema)).to.be.true)?

4) Если  сообщении присутствует файл и отсутствует квитанция, как это протестировать?) (Пометить массив квитанций как необязательный?)

Уф, надеюсь более менее понятно написал )))

Заранее спасибо )



Правильность написания сценария
2019-12-22 00:28

Доброго времени суток.

 

Попросили написать сценарий и тест с использованием Selenium + Cucumber.

Проект настроить не составило труда, все вполне понятно.
Начал разбираться с подходом BDD.

Есть требование к сценарию:

1. Открыть браузер и развернуть на весь экран.
2. Зайти на yandex.ru.
3. Перейти в яндекс маркет
4. Выбрать раздел Электроника
5. Выбрать раздел Мобильные телефоны
6. Перейти в расширенный поиск
7. Задать параметр поиска от 20000 рублей.
8. Выбрать производителей Apple и Samsung 
9. Нажать кнопку Применить.
10. Проверить, что элементов на странице 12.
11. Запомнить первый элемент в списке.
12. В поисковую строку ввести запомненное значение.
13. Найти и проверить, что наименование товара соответствует запомненному значению.

Я описал его так:

Feature: Scenario1
   Given открытый браузер 
   Than открыть страницу ya.ru
   And в поисковую строку ввести "яндекс маркет"
   Than найти по поисковому запросу яндекс маркет
   And перейти в яндекс маркет
   Than перейти в раздел "Мобильные телефоны"
   And перйти в разширеный поиск по разделу
   And задать параметр поиска от 20000 рублей
   And выбрать производителей Apple и Samsung
   When нажимаю кнопку "Перменить"
   Than вижу на странице 12 штук товаров
   And запоминаю первый элемент
   When ввожу в поисковую строку запомненое значение
   And нажимаю кнопку "Найти"
   Than запомненое значение равно первому из найденного списка товаров

Может кто-нибудь ответить на вопросы:
1.На сколько корректно я написал сценарий с точки зрения BDD.
2.Так как опыта с BDD у меня нет, может что то можно улучшить в данном сценарии(так как  мне кажется что написал я  полную лажу).

За ответы спасибо за ранее.
 



Как корректно передать Заголовок в экстракторе
2020-01-06 09:13

Доброго дня всем, столкнулся в практике что значение переменной необходимо передать в Заголовке location:/en/checkout?booking_token=8559270721578282445909705

1) Решил вытащить через Regular Extractor

Прикрепленные изображения

  • 2020-01-06_1016.png


Tech Support
2020-01-06 22:32

Shopping Cart Elite - американская IT компания , которая работает в сфере Е-commerce.

 

В компании проходит набор сотрудников на вакансию Tech Support.

 

Чем будет заниматься сотрудник на этой должности:

- Помогать клиентам в выяснении их проблем, если у них возникают какие-либо трудности при использовании нашего программного обеспечения (проводится обучение)
- Помогать клиентам в настройке интернет-магазинов на платформе Shopping Cart Elite (проводится обучение)
- Звонить клиентам, чтобы прояснить или объяснить ситуацию
- Устранение технических неполадок (обязанности по обеспечению качества)
- Проводить клиентов через систему по запросам
- Осуществлять поддержку торговых площадок (eBay, Amazon, Jet, Walmart, Etsy) (обучение проводится)
 
В двух словах, если у клиента возникает какая либо проблема, мы моделируем ее, тестируем пути решения и даем готовое решение клиенту.
 
Занятость во второй половине дня, так как работаем с американским рынком. Время работы 17:00 - 1:00 по Киеву.
 
Из требований несколько пунктов:
- Уровень английского: средний или выше
- Быстрообучаемость и готовность воспринимать новую информацию
- Знание протоколов SMTP, IMAP, POP3
- Базовое понимание принципов клиент-серверных приложений
- Базовое понимание баз данных
 
Ссылка на сайт компании: https://www.shoppingcartelite.com/
 
Если интересно предложение пишите на скайп: alishka489 и отвечу на все вопросы.

 



© 2010 | Software-Testing.Ru


В избранное