Как исправить класс, вызванный в очереди задач в python - PullRequest
0 голосов
/ 16 апреля 2020

Приложение: - Flask Python: - 3.6.7 Тестовая среда: - PyTest

У меня есть метод generi c, определенный в следующем пространстве имен и имеющий следующую структуру

my_app.contrib.util.request.GenericRequest
class GenericRequest:


    def __init__(self, method, url=REDIRECT_URL, **kwargs):

        self.method = method
        self.url = url
        self.kwargs = kwargs

    def send_request(self):

        if self.method == "head":
            self.kwargs.setdefault("allow_redirects", False)

        with Session() as session:
            return session.request(method=self.method, url=self.url, **self.kwargs)

Я вызываю этот класс методов из очереди задач сельдерея следующим образом, которая имеет следующее пространство имен

my_app.task_queue
@app.task
def call_remote(**kwargs) -> str:

    response = GenericRequest(
            method="post",
            url=remote_app_url,
            timeout=10,
            params={
                "type": 10
            },
            headers=headers,
            cert=ca_file,
        ).send_request()

        if response.status_code == 200:
            remote_message = (response.json()["message"])


И я хочу высмеять GenericRequest из pytest

Попробовал исправление и не удалось, и оно не исправляется GenericRequest

def test_get_remote_message(client: Client) -> None:

   // more code here

    with patch("my_app.task_queue.GenericRequest") as mock:
        instance = mock.return_value
        instance.send_request = {"message": ""}
        for url in urls:
            client.post(url) # This will call the task queue's GeneriRequest 

Также пробовал со следующим пространством имен my_app.contrib.util.request.GenericRequest и получил ошибку. Как смоделировать GenericRequest, который вызывается из task_queue через PyTest

...