Как собрать данные для тестов в асинхронном коде - PullRequest
0 голосов
/ 23 сентября 2019

Я пишу сквозные тесты (Python, pytest, sqlaclhemy) бэкэнда (примитивная бизнес-логика) для моего проекта.Синхронный код - пока, все хорошо: я делаю запрос.Бэкенд делает свою работу.Я собираю ответы и данные базы данных.Затем сделаем некоторое утверждение.

Однако, поскольку мой проект стал более асинхронным, я не могу этого сделать: я делаю запрос к бэкэнду, он возвращает мне ответ.И затем, бэкэнд идет и делает свою работу.Поэтому у меня нет события, которое сообщало бы мне, что бэкэнд завершил свою работу.

Поэтому, что я делаю: я явно опрашиваю свою базу данных на предмет значений, которые мне нужны для тестов.Я думаю, что это неправильно.

Некоторые мысли о том, как решить проблему:

  1. События ORM - я не могу этого сделать из-за моего бегуна (pytest).Он завершает функцию тестов до того, как появится событие, и функция будет вызвана.
  2. Обратные вызовы - То же самое, pytest не будет распознавать функции тестов, если они будут в качестве обратных вызовов.

Такпроблема в том, как использовать преимущества асинхронного кода и сквозных тестов вместе.Это немного теоретический вопрос, но любые ваши мысли об этом будут очень ценными.

...