Вы должны насмехаться над тем, где вы тестируете.На основании приведенного примера это означает, что класс Escli
, который вы используете в модуле settings.py
, должен быть смоделирован относительно settings.py
.Таким образом, на практике ваш patch
вызов будет выглядеть следующим образом внутри setUp
:
self.patcher = patch('escli.settings.Escli')
С этим вы теперь высмеиваете, что хотите, в нужном месте в зависимости от того, как выполняются ваши тесты.,
Кроме того, чтобы повысить надежность тестирования, вы можете рассмотреть возможность создания экземпляра Elasticsearch
, который вы создаете, чтобы проверить, действительно ли вы вызываете допустимые методы, соответствующие Elasticsearch
.Имея это в виду, вы можете сделать что-то вроде этого, вместо этого:
self.patcher = patch('escli.settings.Escli', Mock(Elasticsearch))
Чтобы прочитать немного больше о том, что именно подразумевается под spec
, проверьте раздел patch вдокументация.
В качестве последнего замечания, если вы заинтересованы в изучении великого мира pytest , существует плагин pytest -asticsearch , созданный для этой цели.