vcrpy icon indicating copy to clipboard operation
vcrpy copied to clipboard

Compatibility with starlette / fastapi TestClient

Open johnraz opened this issue 3 years ago • 4 comments

Hi!

I've been facing some issues with a test suite that makes use of Starlette's TestClient, which is also used by FastAPI.

Important note, I'm using pytest with pytest-recording.

There are 2 types of issues I see, and both are random and not easily reproducible:

  1. cassettes are sometimes not recorded when running the full test suite but are when running the test alone.
  2. tests are failing when running test2, and trying to access the cassette in test2, while test2 is not even using use_cassette... This mostly happens in parametrized tests but I'm not sure this is the "key" reason.

I think the problem mostly comes from the fact that the TestClient starts an async loop behind the scene which seems to hit the thread safety problem described here: https://github.com/kevin1024/vcrpy/issues/295, do you think it is indeed related?

Thanks for you time and for the otherwise very useful project 😃

johnraz avatar Jan 07 '22 09:01 johnraz

Hi, I've hit similar problem. Did you succeed to resolve this maybe?

garbusbeach avatar Aug 01 '24 12:08 garbusbeach

No sadly not - it makes vcrpy hard to use with Starlette test client.

johnraz avatar Aug 01 '24 13:08 johnraz

I just hit the same problem. I'm convinced this is a problem with pytest-recording

mawkee avatar Sep 09 '24 17:09 mawkee

Seems to "work" for us, but tests that use the client (rather than testing some more direct python code) have this issue: No match for the request (<Request (POST) http://testserver/orgs>) was found.

Was hoping this would suffice, but nope: "ignore_hosts": ["testserver"],

chris-erickson avatar Nov 21 '24 21:11 chris-erickson

I just shared some thoughts on similar issue here https://github.com/kevin1024/vcrpy/pull/923#issuecomment-3551622457

nhtgl avatar Nov 19 '25 09:11 nhtgl

Do you have an MRE?

Kludex avatar Nov 19 '25 09:11 Kludex