Всем привет. Такая ситуация, надо написать тесты для rest api, у меня используется celery. Я попробовал прописать настройки always eager, чтобы во время проката тестов задачи выполнялись синхронно. В одной из задаче делаются некоторые вычисления на основе модели и потом в бул переменную записываеся True. Далее по тесткейсу я иду по другому ендпоинту, который как раз проверяет эту переменную у объекта, но почему-то возвращается False, хотя та задача вызывается синхронно до похода на этот урл, в чем может быть проблема?
Всем привет. Такая ситуация, надо написать тесты для rest api, у меня используется celery. Я попробовал прописать настройки always eager, чтобы во время проката тестов задачи выполнялись синхронно. В одной из задаче делаются некоторые вычисления на основе модели и потом в бул переменную записываеся True. Далее по тесткейсу я иду по другому ендпоинту, который как раз проверяет эту переменную у объекта, но почему-то возвращается False, хотя та задача вызывается синхронно до похода на этот урл, в чем может быть проблема?
Не совсем по твоей ошибке именно, но я вижу в твоём сценарии как минимум две проблемы архитектурного плана.
1) always_eager не рекомендуется использовать для тестов - об этом прямо в доке написано 2) у тебя один тест проверяет сразу два эндпойнта апи?
Всем привет. Такая ситуация, надо написать тесты для rest api, у меня используется celery. Я попробовал прописать настройки always eager, чтобы во время проката тестов задачи выполнялись синхронно. В одной из задаче делаются некоторые вычисления на основе модели и потом в бул переменную записываеся True. Далее по тесткейсу я иду по другому ендпоинту, который как раз проверяет эту переменную у объекта, но почему-то возвращается False, хотя та задача вызывается синхронно до похода на этот урл, в чем может быть проблема?
А так - может, у тебя объект закешировался до выполнения таска? Попробуй после таска его явно из базы дёрнуть
А так - может, у тебя объект закешировался до выполнения таска? Попробуй после таска его явно из базы дёрнуть
(У моделей прям есть метод refresh_from_db)
по идее не в этом дело, так как я иду на второй эндпоинт и как раз дергаю модельку из базы, в которой уже той таской должно быть перезаписано поле, но оно ,почему-то, не перезаписано))
по идее не в этом дело, так как я иду на второй эндпоинт и как раз дергаю модельку из базы, в которой уже той таской должно быть перезаписано поле, но оно ,почему-то, не перезаписано))
А, верно
А сеттинги точно правильные подхватываются, с always_eager=True?
А сеттинги точно правильные подхватываются, с always_eager=True?
Да, сто пудов, и задача, по идее, выполняется, так как если старым добрым принтом чего-нибудь выводить в таске, то выводится, хотя селери я отдельно не запускал. Значит конфиг точно подтягивается, короче, непонятно.