У меня есть следующая структура для проекта
myapp
|
-contrib
|
- helpers.py
- views
|
- app_view.py
В helpers.py
У меня есть следующий метод
def method(**kwargs) -> int:
# Some code here
requests.post(
url=f"{REMOTE_SERVER}/sc",
json=kwargs,
timeout=5
)
В app_view.py
У меня есть следующая реализация. Я вызываю метод внутри потока, и мне нужно смоделировать его с помощью pytest, чтобы проверить, вызывается ли он один раз и вызывается с определенным количеством параметров.
import myapp.contrib.helpers import method
class Score(MethodView):
@prepare_req
def post(self, **kwargs):
"""
Post Score
"""
response_data = dict()
# Some logic here
self.filter_score(kwargs)
return jsonify(response_data)
def filter_score(self, **kwargs)
thread = threading.Thread(target=method, kwargs=event_data)
thread.start()
Использование pytest
Я пытаюсь смоделироватьmethod()
следующим образом.
def test_score(client, mocker):
url = "sc/1.1/score"
patched_method = mocker.patch(
"myapp.contrib.helpers.method"
)
client.post(url, json=issue_voucher_post_data)
patched_method.assert_called_once() # <- this is getting false and not mocking the method
Пробовал также и ниже, но он не исправится должным образом
patched_method = mocker.patch(
"myapp.views.app_view.method"
)
Но он вызовет соответствующее представление
Как издеватьсяфункция, используемая внутри потока в представлении, которое доступно в другом модуле, использующем pytest?