Форум сайта python.su
Доброго времени! В джанго проекте есть глобальная переменная, связанная с БД. Можно ли ее подменить таким образом, что бы в тестах ее __init__ метод не срабатывал?
Экстракт проблемы выкладываю:
модуль main.py:
import long_time_module as l def main(): print('Executing main function') def optional(): l.ltc.print_ok() if __name__ == '__main__': main() optional()
class LongTimeExecutingClass(): def __init__(self) -> None: print('LongTimeExecutingClass - Long, Long init') def print_ok(self)->None: print ('LongTimeExecutingClass - print ok') ltc = LongTimeExecutingClass()
from unittest import TestCase from unittest.mock import patch class MyClass(): def __init__(self) -> None: print('Mocking init') def print_ok(self) -> None: print ('Mocking class - print ok') class TestAll(TestCase): @patch('main.l.ltc', MyClass(), spec=False) def test_main(self): import main main.main() main.optional() assert True
def test_main(self): import main main.l.ltc = MyClass() main.main() main.optional() assert True
Отредактировано ZZ-ZZ (Янв. 24, 2024 20:00:27)
Офлайн
можно
но вы явно не понимаетет структуру дженги
Либо берите как есть
либо своими
И так и так правильно
Офлайн
можноСпасибо! )
Офлайн
Миграции - это способ Django распространять изменения, которые вы вносите в свои модели (добавление поля, удаление модели и т. д.), в схему вашей базы данных.
drift hunters
Офлайн