Как я изучал тесты Postman

Обо мне

Я Java backend разработчик с 3-х летним опытом.

Почему я хотел изучить Postman Tests

Это хорошее решение для QA-инженеров, когда они хотят протестировать серверный API, они могут создавать тестовые случаи и запускать набор тестов. Для разработчиков бэкенда это хорошая возможность протестировать микросервисы, когда вы переписываете микросервисы с одного на другой. Я хотел изучить тесты Postman, потому что мне приходится писать одни и те же приложения на разных языках.

Как я подошел к изучению Postman Tests

Во-первых, перед созданием тестов нам нужно серверное приложение с API, или мы можем разработать API и использовать фиктивный сервер в почтальоне. Я покажу вам пример модели API ниже:

  1. Создавать новая книга (метод: POST; конечная точка: /books). Когда кто-то хочет создать с тем же идентификатором, служба должна вернуть ошибку 409.
  2. Удалить книга по идентификатору (метод: DELETE; конечная точка: /books/{id})
  3. Читать книга по идентификатору (метод: GET; конечная точка: /books/{id}). Когда кто-то хочет прочитать книгу с несуществующим идентификатором, служба должна вернуть ошибку 400.
  4. Обновлять книга по идентификатору (метод: PUT; конечная точка: /books/{id}). Когда кто-то хочет обновить книгу с несуществующим идентификатором, служба должна возвращать ошибку 400.

Модель книги:

{
  "id": string,
  "title": string,
  "author": string,
  "publisher": string
}

Тестовые случаи

Для каждого теста мы создадим отдельный запрос в Postman. Это даст нам возможность запускать коллекцию как список тестовых случаев.

  1. Создать книгу
    Снимок экрана 20 июня 2019 г., 17.54.02.png
    Вы можете видеть, что для тестового примера у нас есть 2 теста Postmans (старый подход):

    tests["Status code is 200"] = responseCode.code === 200;
    tests["Body is correct"] = responseBody === pm.environment.get("body")
    

    На вкладке «Тесты» у нас есть доступ к определенным переменным, таким как tests, responseCode, responseBody.

    • tests — массив тестов, где ключ — имя нашего теста Postman;
    • responseCode — объект, где одним параметром является код ответа HTTP;
    • responseBody — строка, содержащая объект ответа;

    Результаты теста:
    Снимок экрана 21 июня 2019 г., 15.23.32.png

  2. Получить книгу по идентификатору
    Снимок экрана 21 июня 2019 г., 16:04:59.png
    Вы можете видеть, что для тестового примера у нас есть 4 теста Postmans (другой подход):

        var body = {"id":"123", "title": "Harry Potter", "author": "Rowling", "publisher": "ababahalamaha"};
    
        pm.test("Status code is 200", function () {
            pm.response.to.have.status(200);
        });
    
        pm.test("Status code is ok", function () {
            pm.response.to.have.status("OK");
        });
    
        pm.test("Content-Type is present", function () {
      		pm.response.to.have.header("Content-Type");
        });
    
        pm.test("Body is correct", function () {
            pm.response.to.have.body(JSON.stringify(body));
        });
    
  3. Обновить существующую книгу
    Снимок экрана 21 июня 2019 г., 16:56:52.png
    Вы можете видеть, что для тестового примера у нас есть 4 теста Postmans (другой подход, использование response.to.be):

    
      // example using pm.response.to.be*
      pm.test("Status code is 200y", function () {
           // assert that the status code is 200
           pm.response.to.be.ok; // info, success, redirection, clientError,  serverError, are other variants
      });
      pm.test("response must be with Body", function () {
           // assert that the response has a valid JSON body
           pm.response.to.be.withBody;
      });
      pm.test("response must be json", function () {
           pm.response.to.be.json; // this assertion also checks if a body  exists, so the above check is not needed
      });
      pm.test("Body is correct", function () {
          pm.response.to.have.body(pm.environment.get("body"));
      });
    
  4. Создать книгу с существующим идентификатором
    Снимок экрана 21.06.2019, 17.10.56.png
    Вы можете видеть, что для тестового примера у нас есть 3 теста Postmans (другой подход, с использованием pm.expect)

        var result = JSON.parse(responseBody);
    tests["Status code is 409"] = responseCode.code === 409;
    
    
    pm.test("Error is correct", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.error).to.eql("Conflict");
    });
    
    pm.test("Message is correct", function () {
        pm.expect(pm.response.text()).to.include("The book with the same id was created before");
    });
    
  5. Получить книгу по несуществующему идентификатору

    1. Код ответа равен 404;
    2. Тело ответа должно содержать error: "Not Found" а также message:"Book with current id is not exist"

    Вы можете попробовать сделать свои собственные тесты Postman.

  6. Обновить несуществующую книгу

    1. Код ответа равен 404;
    2. Тело ответа должно содержать error: "Not Found" а также message:"Book with current id is not exist"
  7. Удалить книгу

    1. Код ответа равен 200;

Как запустить все тестовые случаи

ОК, серьезно у меня с этим была большая проблема, сбор не запустился!!!))) Серьезно)
Не забудьте сохранить ваши запросы!!!

  1. Нажмите красную кнопку ниже
    Снимок экрана 21 июня 2019 г., 17:29:55.png

  2. Нажмите Бежать;
    Снимок экрана 21 июня 2019 г., 17:26:43.png

  3. Нажмите Выполнить книгу
    Снимок экрана 21 июня 2019 г., 17:27:48.png
    И Оля!!! Наш результат!!!

Советы и советы

Вам необходимо иметь базовые знания JS и не забывайте сохранять свои запросы))

Заключительные мысли и следующие шаги

Я думаю, в будущем вы можете попробовать интегрировать Postman Tests в свой CI/CD или попробовать написать тесты в стиле BDD.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *