Как я изучал тесты Postman
Обо мне
Я Java backend разработчик с 3-х летним опытом.
Почему я хотел изучить Postman Tests
Это хорошее решение для QA-инженеров, когда они хотят протестировать серверный API, они могут создавать тестовые случаи и запускать набор тестов. Для разработчиков бэкенда это хорошая возможность протестировать микросервисы, когда вы переписываете микросервисы с одного на другой. Я хотел изучить тесты Postman, потому что мне приходится писать одни и те же приложения на разных языках.
Как я подошел к изучению Postman Tests
Во-первых, перед созданием тестов нам нужно серверное приложение с API, или мы можем разработать API и использовать фиктивный сервер в почтальоне. Я покажу вам пример модели API ниже:
- Создавать новая книга (метод: POST; конечная точка: /books). Когда кто-то хочет создать с тем же идентификатором, служба должна вернуть ошибку 409.
- Удалить книга по идентификатору (метод: DELETE; конечная точка: /books/{id})
- Читать книга по идентификатору (метод: GET; конечная точка: /books/{id}). Когда кто-то хочет прочитать книгу с несуществующим идентификатором, служба должна вернуть ошибку 400.
- Обновлять книга по идентификатору (метод: PUT; конечная точка: /books/{id}). Когда кто-то хочет обновить книгу с несуществующим идентификатором, служба должна возвращать ошибку 400.
Модель книги:
{
"id": string,
"title": string,
"author": string,
"publisher": string
}
Тестовые случаи
Для каждого теста мы создадим отдельный запрос в Postman. Это даст нам возможность запускать коллекцию как список тестовых случаев.
Создать книгу
Вы можете видеть, что для тестового примера у нас есть 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
— строка, содержащая объект ответа;
Результаты теста:
Получить книгу по идентификатору
Вы можете видеть, что для тестового примера у нас есть 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)); });
Обновить существующую книгу
Вы можете видеть, что для тестового примера у нас есть 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")); });
Создать книгу с существующим идентификатором
Вы можете видеть, что для тестового примера у нас есть 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"); });
Получить книгу по несуществующему идентификатору
- Код ответа равен 404;
- Тело ответа должно содержать
error: "Not Found"
а такжеmessage:"Book with current id is not exist"
Вы можете попробовать сделать свои собственные тесты Postman.
Обновить несуществующую книгу
- Код ответа равен 404;
- Тело ответа должно содержать
error: "Not Found"
а такжеmessage:"Book with current id is not exist"
Удалить книгу
- Код ответа равен 200;
Как запустить все тестовые случаи
ОК, серьезно у меня с этим была большая проблема, сбор не запустился!!!))) Серьезно)
Не забудьте сохранить ваши запросы!!!
Нажмите красную кнопку ниже
Нажмите Бежать;
Нажмите Выполнить книгу
И Оля!!! Наш результат!!!
Советы и советы
Вам необходимо иметь базовые знания JS и не забывайте сохранять свои запросы))
Заключительные мысли и следующие шаги
Я думаю, в будущем вы можете попробовать интегрировать Postman Tests в свой CI/CD или попробовать написать тесты в стиле BDD.