pythonmultithreadingpython-requestspytestvcr

Does vcrpy's record_mode=None guarantee no HTTP requests will be sent even if the requests are made in a thread?


I am testing some code with pytest and using the vcrpy decorator as follows:

@pytest.mark.vcr(record_mode='none')
def test_something():
    make_requests_in_a_thread_and_save_to_queue()
    logged_responses = log_responses_from_queue_in_a_thread()
    assert logged_responses == expected_logged_responses

The test fails because the logged_responses are new responses, which are the results of new HTTP requests that have been made during test_something().

I have a cassette saved in the correct place, but this is probably irrelevant because even if I didn't I should be getting a vcrpy CassetteError rather than a failed test.

Does record_mode='none' not apply to code executed within threads?

If not, how should I approach the testing problem? Thank you!


Solution

  • I found out what the problem was. I was using a stream API rather than sending http requests. record_mode='none' refers to http requests.