Я пишу сквозные тесты (Python, pytest, sqlaclhemy) бэкэнда (примитивная бизнес-логика) для моего проекта.Синхронный код - пока, все хорошо: я делаю запрос.Бэкенд делает свою работу.Я собираю ответы и данные базы данных.Затем сделаем некоторое утверждение.
Однако, поскольку мой проект стал более асинхронным, я не могу этого сделать: я делаю запрос к бэкэнду, он возвращает мне ответ.И затем, бэкэнд идет и делает свою работу.Поэтому у меня нет события, которое сообщало бы мне, что бэкэнд завершил свою работу.
Поэтому, что я делаю: я явно опрашиваю свою базу данных на предмет значений, которые мне нужны для тестов.Я думаю, что это неправильно.
Некоторые мысли о том, как решить проблему:
- События ORM - я не могу этого сделать из-за моего бегуна (pytest).Он завершает функцию тестов до того, как появится событие, и функция будет вызвана.
- Обратные вызовы - То же самое, pytest не будет распознавать функции тестов, если они будут в качестве обратных вызовов.
Такпроблема в том, как использовать преимущества асинхронного кода и сквозных тестов вместе.Это немного теоретический вопрос, но любые ваши мысли об этом будут очень ценными.