kevin1024 / vcrpy

Automatically mock your HTTP interactions to simplify and speed up testing
MIT License
2.69k stars 387 forks source link

Compatibility with starlette / fastapi TestClient #628

Open johnraz opened 2 years ago

johnraz commented 2 years ago

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 😃

garbusbeach commented 2 months ago

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

johnraz commented 2 months ago

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

mawkee commented 3 weeks ago

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