ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:00:15
Настройка интеграции тестов:
  • 1. Создать папку `test users` и разместить там тесты API
  • 2. Разработать асинхронную функцию поиска пользователей по идентификатору (find by id)
  • 3. Назначить Артёму задачу зайти в тестовую базу (`test dao`) и создать новую асинхронную функцию
00:00:52
Создание и запуск юнит-тестов:
  • Создан модуль идентификации пользователя (find by id), использующий импорт из таблицы юзеров (From users dao)
  • Запущен единичный тест ПайТест с указанием флага `-s` для вывода результата выполнения теста в консоль
  • Разработан способ проверки соответствия ожидаемого пользователя и полученного идентификатора (айдишника)
00:03:48
Параметризованные юнит-тесты:
  • 1. Принято решение использовать параметр `id` (идентификатор), который будет называться `user id`, и передавать вместе с ним email пользователя
  • 2. Предложено добавить проверку наличия пользователя через утверждение (`assert`) и убедиться, что его email корректный либо пустой
  • 3. Обсуждалось применение юнит-тестирования отдельных функций и переход к созданию интеграционных тестов для проверки работы с базой данных и API
00:06:11
Написание интеграционных тестов:
  • 1. Проведена проверка работы апишек и слоев базы данных
  • 2. Подтверждено добавление функционала букинга в базу данных
  • 3. Предложено дополнительно проверить наличие букинга через API
0: Ну что друзья, давайте протестируем работу дао мы возьмём класс base дао мы например попробуем найти какого-нибудь пользователя и написать unit test под это дело итак кстати единственное что тест для api у нас должен.
1: Быть в integration тест, давайте здесь сделаем также папку test users и переместим тест апи именно туда, а пока поработаем с тест дао для юзеров итак, у нас есть метод find by id, он просто находит.
2: Пользователя по айдишнику. Давайте вспомним, какие у нас есть пользователи.
3: У нас есть 2 пользователя. Это Артём, и тест в порядке. Тест будет 1. 2 будет. Артём, давайте сделаем это, заходим в тест дао. Так создаём здесь асинхронную функцию тест и заберём назва
4: Например, find by id.
5: И чтобы уточнить, что мы работаем с юзерами файнд юзер бай айди. И помните, мы создавали сессию, наверное, в данном случае она не будет полезна, потому что у нас dava сам генерирует сессию вот здесь, но в каких-то случаях он, она, конечно, может
6: Пригодится. Итак, нам нужен модул айди.
7: Давайте сделаем это, импортируем, естественно, Фром эп юзерс дао. Мы импортируем юзерс дао и хотим обратиться к нему. У нас будет, например, юзер равно юзерс, дао файн.
8: Бай айди и укажем, например, 1 айдишник. И если мы не помним, что там вернёт нам скал химия, мы можем просто здесь сделать print user и посмотреть, что, собственно, нам он ввернёт, естественно, здесь не забы.
9: Будем сделать Вейт и давайте запустим пайтест с флагом минус с, чтобы у нас в консоли отобразился, собственно, пользователь.
10: И у нас, конечно, все тесты проходят. И давайте посмотрим, что у нас здесь есть. У нас отображается вообще пользователь тест, собака, тест точка ком. Действительно, потому что, помните, мы делали с вами в админке такой функционал.
11: Что у нас отдаётся при принте действительно пользователь. Поэтому как нам здесь поступить? Как нам проверить, что пользователь, который нам пришёл, действительно тот, что мы ожидаем, да, в целом очень просто давайте сделаем вот как вот к нам
12: Пришёл пользователь, мы можем проверить. Давайте вот так сделаем. Мы можем проверить, что у него емейл, например, тест собака, тест точка ком. Почему бы и нет? Мы можем проверить, что юзер емейл равно
13: Вот такой емейл, мы также можем проверить его айдишник, убедиться, что раз мы отдали 1 айдишник, мы и получили пользователя с 1 айдишником. И также нам нужно здесь, знаете что понять, что у нас есть много, много Тестов, мы не хотим ждать, пока все тесты прогонят.
14: Мы можем запустить конкретный тест в этом файле. Как это сделать? Pytest минус в минус с и далее укажем через апп тестс. У нас называется папка юнит тестс.
15: Test users.
16: И тест дао точка пай. Итак, у нас отработал единственный тест. Нам не пришлось ждать, как обычно, там 5 секунд, а всего полсекундочки. И мы увидели, что тест прошёл. Естественно, у нас есть несколько пользователей, и мы можем
17: Проверить 2 пользователя давайте так и сделаем и проверим, что у нас, если nat пользователя возвращается none, давайте это сделаем для закрепления, чтобы понять, как у нас работают юни тесты с sql алхимией пайтест.
18: Марк параметрас. Давайте импортируем пайтест, чтобы у нас весь код подсказывал, как пишется слово параметрайзом му, что это просто невозможно запомнить и что у нас будет, у нас будет просто айдишник. И здесь мы можем разместить, например,
19: Какой-нибудь статус из present, да, что пользователь действительно существует. И передать сюда такие параметры. Айдишник 1 у нас существует, 2 мы тоже
20: Посмотрим, у нас существует a3, когда мы запросим 3 пользователя, его не будет. Давайте посмотрим, значит, что нам нужно сделать. Нам, естественно, нужно принять вот эти параметры id и user.
21: Id да, давайте назовём это user id, чтобы случайно мы не запутались, что да как.
22: И да, здесь также не забудем передать почту, потому что раз мы сверяем почту каждый раз, давайте вот здесь будет почта.
23: Вот такая.
24: Здесь будет вот такая, а здесь даже неважно какая. Мы можем просто какую-нибудь белиберду передать, и мы не будем её проверять. Её наличие мы можем сделать вот что значит если is present
25: Тогда мы должны убедиться, что юзер есть, да просто assert user иначе.
26: Assert not user. И также мы хотим, что если у нас есть пользователь, мы проверим его емейл, а иначе мы просто убедимся, что он является пустым и не присутствует. То есть здесь мы передадим емейл и
27: Все, мы также не забудем её передать сюда, сохранить это дело. Это можно закрыть и запустим опять же, всего 1 тестик. Посмотрим, как он отработает, и все тест кейсы прошли. Да, здесь можно было указать какую-то другую почту, но тем не менее мы посмотрел
28: Как у нас тестируются в изоляции отдельные функции юнит тесты, которые позволяют работать со слоем базы данных. Мы также посмотрели на то, как работать с апишкой, и следующим шагом является написание интеграционных Тестов, которые
29: Проверяют и работу апишки и работу. Например, слоя базы данных. Мы можем проверить в базе данных, что мы добавили букинг, и затем получить его, убедиться, что он есть. Мы также можем добавить этот самый букинг, например, через
30: Api и убедиться, что он есть тоже через api.