Доступ к нескольким звонкам в mock_post - PullRequest
0 голосов
/ 30 октября 2019

У меня есть функция, которая запускает два почтовых запроса, например:

def send_posts():
    first_response = requests.post(
            url="google.com",
            json={'records': [{'value': message}]},
        )
    second_response = requests.post(
            url="apple.com",
            json={'records': [{'value': message}]},
        )

В моем unittest у меня есть что-то вроде этого:

@patch('requests.post')
def send_e2e_kafka_with_env_vars(mock_post, expect, monkeypatch):
    send_posts()

    args, kwargs = mock_post.call_args // returns kwargs for 2nd post

    # I've tried, but get ' ValueError: too many values to unpack (expected 2)'
    my_first_call = mock_post.mock_calls[0]
    args, kwargs = my_first_call[0]

В конечном счете, я ищучтобы утверждать, что URL первого поста - "google.com". Как я могу это сделать?

1 Ответ

1 голос
/ 30 октября 2019

Каждый фиктивный вызов имеет 3 аргумента, поэтому, если вы пытаетесь распаковать их, вам нужно сопоставить его (и вы, вероятно, хотите игнорировать первый, поэтому _):

@patch('requests.post')
def send_e2e_kafka_with_env_vars(mock_post, expect, monkeypatch):
    send_posts()

    args, kwargs = mock_post.call_args
    _, args, kwargs = mock_post.mock_calls[0]
...