Giter VIP home page Giter VIP logo

Comments (6)

birkhola avatar birkhola commented on May 20, 2024 1

For scope="module" it also does not record requests/responses done in fixtures.

from pytest-recording.

Stranger6667 avatar Stranger6667 commented on May 20, 2024 1

Hi! Unfortunately I don’t have much bandwidth to implement it myself, but will be happy to provide guidance and review a PR

from pytest-recording.

joshtemple avatar joshtemple commented on May 20, 2024

What could be done to make pytest-recording work for fixtures? I'd like to use this library for all VCR so we can ensure headers are filtered by default, but we can't currently do that if it doesn't support recording for session-scoped fixtures.

from pytest-recording.

joshtemple avatar joshtemple commented on May 20, 2024

@Stranger6667, I'd be happy to submit a PR to support marking fixtures in this library. Could you please point me in the right direction or any known blockers?

from pytest-recording.

Stranger6667 avatar Stranger6667 commented on May 20, 2024

Hi everybody! Sorry for the delay.

I think that the way to approach this is to use the logic from the _vcr.py module with fixtures of non-"function" scope. For example, make each "session" fixture depend on a separate "vcr_session" fixture that works similarly to vcr. I.e. opens a context manager that records a cassette.

Though, not sure about configuring such a cassette writer - all the cassette naming & other stuff comes either from higher-level fixtures or pytest marks. The latter don't work on fixtures as far as I can tell :( However, there are module-level marks, so it may be used for recording cassettes inside module-level fixtures.

Here is an idea: Make a session-level fixture that works similarly to the vcr one and also is autouse=True, but can only access session-level configuration (e.g. session-level vcr_config fixture). Then disable it inside the vcr fixture, so it is not recoding calls during the test.

Recording module-level fixtures adds an extra layer here but could be done similarly implementation-wise: no access to higher-level configs & disabling the session-level fixture inside.

Important note: We really need to isolate cassettes from different levels during execution. As VCR is mocking transports, I'd assume it is replacing globally-available functions, so cassettes will interfere with each other. So, it might require some bookkeeping with enabling/disabling different cassettes properly.

Those are my current thoughts on this problem, and I didn't check if this approach will actually work (I assume it should). Let me know if you'd like me to elaborate.

from pytest-recording.

afuetterer avatar afuetterer commented on May 20, 2024

Hi @Stranger6667, is there any update on this? I would be really nice to be able to use vcr in fixtures.

from pytest-recording.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.