Как издеваться над методами одноэлементного экземпляра?

#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 я хочу , чтобы вызов базы данных не происходил. Как бы я это сделал?