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.