Традиционно строительство, развертывание и тестирование (белая коробка) API были сделаны в отделении. Строитель написал модульные тесты и обеспечил функционирование API в соответствии с спецификацией. Команда DevOps обрабатывала развертывания, в то время как команда QA писала тест на белом ящике, используя такие инструменты, как Chai Http, Blue Tape и т. Д.
Почтальон стал стандартом для сотрудничества, обмена и документирования API. Если вы строите API, скорее всего, вы используете почтальон.
Не многие знают, что почтальон также позволяет вам писать тесты. Эта функция позволяет разработчику Backend писать тесты как часть коллекции. Эти тесты можно позже запускать в конвейере непрерывной интеграции. Эти автоматизации привносят уверенность в развертывании.
В этом уроке мы будем использовать Todo ( https://pyher2ne7raefaz22vgl2pr2ku.appsync-api.ap-south-1.amazonaws.com/graphql ) api graphql как отправная точка и охватить следующую:
- Написание тестов с использованием почтальона
- Запустите тесты с использованием действий GitHub при толчке к ветке по умолчанию
Стартовый проект
Пожалуйста, клонируйте следующий репозиторий: https://github.com/wednesday-solutions/postman-tests-starter Анкет Todo API раскрывает несколько конечных точек, в этом уроке мы сосредоточимся только на следующем:
- Создать пользователя
- CreateList
- Создание
- Querynotes
Примечание. Если вы не знакомы с GraphQL, пожалуйста, потратьте несколько минут, чтобы прочитать спецификацию здесь. ( https://graphql.org/ )
Письменные тесты
В качестве первого шага почтальона, перейдите к Файл → Импорт и перетаскивать коллекцию и окружающую среду.
CreateUser Test
Этот API создает пользователя. Тестирование это просто, нам просто нужно обеспечить user_id генерируется.
Теперь, когда вы загружаете свои коллекции и готовы, следуйте этим шагам, чтобы добавить тест.
1. Опена мутация Папка и выберите CreateUsers.
2. Переамить Тело Вкладка и добавьте это в раздел переменных графства
{ "createUserInput": { "name": "Mac", "userRef": "mac-123" } }
Приведенные выше переменные будут переданы в API. Не стесняйтесь изменить значения в них на то, что вы предпочитаете.
3. Проведите вкладку Tests и добавьте следующий фрагмент:
pm.test("if createUser API creates a valid user", function() { // 1 const response = JSON.parse(responseBody); pm.expect(response.errors).to.be.undefined // 2 const jsonData = JSON.parse(responseBody) postman.setEnvironmentVariable("user_id", jsonData.data.createUser.id) // 3 });
Приведенный выше код может быть трудно понять сначала. Давайте посмотрим на жесткие кусочки.
PM
Здесь означает почтальон. Это объект, который Postman предоставляет с помощью метода испытаний, который вы можете выполнить.- Здесь мы проверяем, имеет ли ответ от API ошибку. Если нет ошибки, это означает, что создание пользователя было успешным.
- Здесь мы установили переменную среды на
user_id
Мы получили от API.
На этом этапе выберите Отправить кнопка. API вернет ответ, выберите кнопку предварительного просмотра и обратите внимание, что переменная среды имеет одинаковое user_id как было возвращено API.
CreateList Test
Этот API создает список Todos. Чтобы проверить этот API, мы напишем тест, который создаст список для user_id Мы создали в предыдущем тесте.
1. Выберите CreateList из Мутации папка
2. Переайтируйте на вкладку тела и добавьте следующее:
{ "createListInput": { "name": "House chores", "userId": {{user_id}} } }
3. Проведите вкладку Tests и добавьте следующее:
pm.test("if createList API creates a valid list", function() { const response = JSON.parse(responseBody); pm.expect(response.errors).to.be.undefined const jsonData = JSON.parse(responseBody) pm.expect(jsonData.data.createList.userId) .to.be.equal(parseInt(pm.environment.get("user_id"), 10)); postman.setEnvironmentVariable("list_id", jsonData.data.createList.id) });
Приведенный выше код должен быть простым для понимания. Мы проверяем, одинаково ли пользователь_ид, и устанавливаем список, который мы получаем из API в переменной среды для дальнейшего использования. Уверль должен быть ясным к настоящему времени, любая зависимость идет в среде, которую вы можете использовать для проверки связанного API.
CreateNote Test
Этот API позволяет пользователям создавать TODO. Давайте напишем тест для этого 1. Выберите CreateNote в папке Mutations.
2. Переайтируйте на вкладку тела и добавьте следующее
{ "createNoteInput": { "note": "Mow the lawn", "listId": {{list_id}}, "deadline": "2021-01-01T00:00:00.000Z" } }
3. Проведите вкладку Tests и напишите тест следующим образом
pm.test("if queryNotes API returns the correct note and associated data", function() { const response = JSON.parse(responseBody); pm.expect(response.errors).to.be.undefined const jsonData = JSON.parse(responseBody) const notes = jsonData.data.notes; pm.expect(notes.items.length).to.be.equal(1); pm.expect(notes.items[0].id).to.be.equal(pm.environment.get("note_id")); pm.expect(notes.items[0].note).to.be.equal("Mow the lawn"); pm.expect(notes.items[0].done).to.be.equal(false); pm.expect(notes.items[0].deadline).to.be.equal("2021-01-01T00:00:00.000Z"); pm.expect(notes.items[0].listId) .to.be.equal(pm.environment.get("list_id")); pm.expect(notes.items[0].list.id) .to.be.equal(pm.environment.get("list_id")); pm.expect(notes.items[0].list.user.id) .to.be.equal(pm.environment.get("user_id")); });
Приведенный выше тестовый пример проверяет, успешно ли примечание создано с правильным списком и идентификатором пользователя.
Примечания Тест
Как следует из названия, этот API используется для запроса для примечаний, которые создаются. Подобно вышеуказанному, вы можете написать тест, чтобы проверить, правильно ли хранятся созданная заметка. Я не буду вдаваться в подробности того, как вы можете написать этот тест, и оставить его в качестве упражнения для вас. Вы можете взглянуть на завершенный тест здесь: https://github.com/wednesday-solutions/postman-tests
Действия GitHub
До этого момента вы должны иметь рабочую коллекцию API с тестами. В этом разделе вы узнаете, как настроить действие GitHub, чтобы запустить эти тесты на слиянии для освоения. Примечание. Если вы хотите узнать о них больше, прочитайте это ( https://github.com/features/actions )
- Создайте файл YML, используя эту команду
mkdir -p ./github/workflows
- Добавьте следующий код в файл YML
name: Postman tests on: push: branches: [master] jobs: run-and-test: runs-on: ubuntu-latest steps: - name: uses: actions/checkout@v2 #1 - name: Run API Tests id: run-newman uses: anthonyvscode/newman-action@v1 with: collection: todo-application.postman_collection.json environment: todo-application.postman_environment.json reporters: cli #2 - name: Output summary to console run: echo ${{ steps.run-newman.outputs.summary }}
Вот объяснение приведенного выше кода:
1. Это использует Newman-Action
Действие GitHub, которое выполнит бегуна коллекции.
Коллекция
Ожидает путь к файлу сбора.среда
Ожидает путь к файлу среды.
Вы можете прочитать обо всех различных вариантах, которые он поддерживает здесь: https://github.com/marketplace/actions/newman-action 2. Это напечатает сводку № 1 на консоли
Вставьте приведенный выше файл в свой репо GitHub и посмотрите, как действия выполняются на каждом слиянии.
Куда пойти отсюда
Postman стал платформой для совместной работы De-Facto для разработки API. Разработчики бэкэнд могут писать интеграционные тесты, пока они вручную тестируют свои API.
В своей самой зарождающейся форме это первый шаг в обеспечении того, чтобы ваши API проходили базовый тест на здравомыслие.
Когда вы добавляете больше тестовых случаев и эмулируете различные сценарии, это может удалить необходимость использования другой структуры для тестирования интеграции.
Вы можете проверить полное рабочее решение ➤ SHEH: https://github.com/wednesday-solutions/postman-tests
Теперь, когда вы знаете, как писать тесты и динамически установить переменные среды в почтальстве, взгляните на следующие статьи, чтобы раскрыть весь потенциал почтальона!
- https://learning.postman.com/docs/writing-scripts/test-scripts/
- https://learning.postman.com/docs/writing-scripts/script-references/test-examples/- https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/
Я надеюсь, что вам понравился этот урок по тестам почтальников. Если у вас есть какие -либо вопросы или комментарии, присоединяйтесь к обсуждению форума ниже.
➤ Этот блог был первоначально опубликован в https://wednesday.is Чтобы узнать больше о том, каково это работать с средой, следуйте за нами: Instagram | Twitter | LinkedIn
Оригинал: «https://dev.to/alichherawalla/how-to-write-postman-tests-and-execute-them-as-a-part-of-your-ci-1enn»