Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.
Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support
Last updated 2 weeks, 2 days ago
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month ago
UPD. К предыдущему посту. Allure мы используем с Newman. Напрямую через Postman нет возможности. Конечно, аллюр отчет можно использовать для себя без каких либо диких ухищрений. Локально у себя на компе делать такие отчеты просто.
Как-нибудь расскажу как это настроить, если интересно.
А узнаю я, что вам это интересно или нет по количеству 🔥 под постом и комментариям конечно=)
Привет, друзья!
Накануне пробежался по своим старым рабочим коллекциям. Вытащил некоторые скрипты и решил закинуть некоторые тесты, которые использовал в Postman.
Их вполне можно использовать при тестировании АПИ. Комбинировать и дополнять. Маленькие шаги в сторону автоматизации некоторых проверок.
Может кому-нибудь будет полезно: https://qa-study-wiki.tilda.ws/tdocs/15-testov-dlya-proverok-api-d4pz64fe0tctl6k
Привет друзья!
Продолжаю делиться полезностями по постману!
В этом посте рассказываю как сделать pre-request скрипт, который будет выполнять аутентификацию прежде чем выполнить сам запрос.
Кто тестирует АПИ наверняка сталкиваться каждый день с тем что нужно протестировать некий end-point, который требует авторизации. Затем надо проверить баг по другому функционалу, который тоже требует авторизации, но пользователь нужен другой и так далее.
У меня был проект, где надо было протестировать кредитную заявку, которая есть только у определенного пользователя, потом проверить исправления бага в функционале вкладов, которые есть у другого пользователя. И мне приходилось выполнять шаги авторизации прежде чем добирался до нужного запроса.
Не то что бы это было сложно, особенно когда правильно работаешь с переменными в постман, но всё равно отнимало время. А порой и нервы, когда выполнив авторизацию доходишь до нужного запроса и оказывается что забыл поменять пользователя. И надо заново авторизацию делать.
Вскоре я пошел гуглить, чтобы узнать как это сделать используя язык программирования JavaScript. Чата джипити, тогда еще и в помине не было, приходилось разбираться самому.
Но для такой тривиальной задачи и чатджипити не нужен, хоть он и может написать скрипт достаточно быстро. Всё необходимое есть уже в Postman. Просто надо знать, где искать.
Приступим!
Так как пост получился большой и с скринами. Я разместил его в notion. Вот ссылка: https://esychev.notion.site/62426d81832d48d897c9c26ebe851c55?pvs=4
В ролике я использую всем известный https://petstore.swagger.io/ и запрос GET /pet/{petId} Find pet by ID
Итоговый скрипт из ролика выглядит так:
```
var schema = {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"category": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
}
},
"name": {
"type": "string"
},
"photoUrls": {
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "integer"
}
}
}
},
"status": {
"type": "string"
}
}
};
var responseData = pm.response.json();
pm.test('Schema is valid', function () {
pm.expect(tv4.validate(responseData, schema)).to.be.true;
});
```
Так как библиотека tv4 устарела и не поддерживается, сам Postman предлагает использовать библиотеку ajv. Поэтому так же предлагаю тот же код с современной библиотекой:
```
const Ajv = require('ajv');
const ajv = new Ajv();
var schema = {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"category": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
}
},
"name": {
"type": "string"
},
"photoUrls": {
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
}
}
},
"status": {
"type": "string"
}
}
};
var responseData = pm.response.json();
pm.test('Schema is valid', function () {
pm.expect(ajv.validate(schema, responseData)).to.be.true;
});
```
Помните, что это всего-лишь пример. Вы можете реализовать дополнительные проверки, либо подойти как-то по другому.
Здесь пример с обязательными полями в схеме, плюс добавил вывод в консоль логов в случае если схема не пройдет валидацию, чтобы мы могли проанализировать какое именно поле не прошло валидацию:
```
const Ajv = require('ajv');
const ajv = new Ajv();
var schema = {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"category": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
},
"required": ["id", "name"] // Обязательные поля для category
},
"name": {
"type": "string"
},
"photoUrls": {
"type": "array",
"items": {
"type": "string"
}
},
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
},
"required": ["id", "name"] // Обязательные поля для tags
}
},
"status": {
"type": "string"
}
},
"required": ["id", "name", "category", "status"] // Обязательные поля для основного объекта
};
var responseData = pm.response.json();
pm.test('Schema is valid', function () {
const validate = ajv.compile(schema);
const valid = validate(responseData);
if (!valid) {
console.error('Validation errors:', validate.errors); // Выводим логи в консоль в случае, если не прошла валидация
}
pm.expect(valid).to.be.true;
});
```
Это будет простенькое "банковское" приложение. ?
В котором будет:
Регистрация/авторизация
Система прав/ролей
Добавление продуктов:
Карты
Вклады
Возможность перевода средств по номеру телефона, карты, счету другому клиенту банка.
Пока это минимум, который хочу реализовать.
Что сделано на данный момент:
✅Регистрация: заполнение формы с полями почта, телефон, пароль, подтверждение пароля. Шаг с подтверждением по "смс" конечно смс у меня нет, но я написал небольшой сервис, который генерирует пятизначный код. Запрос/ответ кода идет через RabbitMQ.
Основное приложение делает запрос в RabbitMQ, сервис генерации проверяет очередь, если находит там запрос генерирует код и отправляет ответ.
✅Уже здесь в отпуске начал реализовывать страницу персонального кабинета, где будет отображена информация о пользователе, список его карт и других продуктов.
Стэк основного приложения: JS, бэк простой rest API на фреймворке express, бд postgresql.
Документация по апи в OpenApi.
Фронт на реакте.
Сервис генерации кода разработан на пайтоне. Тут ничего серьезного буквально 20 строк кода. Но его я буду использовать и для других приложений. В планах реанимировать интернет магазин, to-do list и складское приложение. И провести интеграцию всего этого.
В БД пока только таблица users. Будет добавлена таблица для кодов и для продуктов.
Отдельно прорабатываю и логирование. Хотелось бы либо вернуть кибану, в которой можно будет работать с логами, либо поставить графану.
Посмотрим.
Плюс под это всё надо ещё писать документацию ??
Это все буду использовать для обучения ребят. Но возможно это будет доступно и всем для свободной практики.
Как вам моя задумка? Может есть какие-то мысли, предложения, идеи? Буду рад любому фидбеку :)
Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.
Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support
Last updated 2 weeks, 2 days ago
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month ago