#python #singleton #pytest
Вопрос:
У меня есть модуль, написанный примерно следующим образом:
class __Foo: def __init__(self): self.__client = CeateClient() # a library function async def call_database(self): self.__client.do_thing() foo = __Foo()
Это разработано таким образом, что весь сервер управляет только одним экземпляром этого клиента, поэтому foo
создается один раз и затем используется различными модулями.
Теперь я обязан использовать pytest
, ну, в общем, все для тестирования, но, читая онлайн, я не могу найти правильный путь в этой ситуации. Метод класса call_database
отправляет запрос API в другую службу, чего в рамках теста я не хочу, чтобы на самом деле происходило. Предложения, которые я вижу, говорят о исправлении самого метода класса, но также класс является частным, поэтому я действительно не мог этого сделать.
Дело в том, что при тестировании функции в другом модуле, т. е.:
from foo import foo async def bar(): await foo.call_database()
При тестировании функции bar
я хочу , чтобы вызов базы данных не происходил. Как бы я это сделал?