Git Product home page Git Product logo

Comments (5)

kvas-it avatar kvas-it commented on July 30, 2024

It should work in in-process mode but not in subprocess mode (because in that case you're starting a separate process so the mocking won't apply). To ensure your test runs in in-process mode you can add this decorator to it:

@pytest.mark.script_launch_mode('inprocess')

Let me know if this doesn't work. This would be a bug that I'd want to fix.

from pytest-console-scripts.

carmocca avatar carmocca commented on July 30, 2024

Isn't inprocess the default launch mode? In any case, it still does not work when I set it explicitly

from pytest-console-scripts.

kvas-it avatar kvas-it commented on July 30, 2024

Yeah, you're right, mocking in the script itself doesn't work even in in-process mode. The reason for that is that the script is not imported via the usual module machinery but is compiled and executed directly instead. There are two problems with importing it as a module:

  1. it might not be accessible (not in the path and/or not a .py file),
  2. if we import it as a module, __name__ will not be "__main__", so if __name__ == '__main__': block that many scripts have would not execute, which would mess things up.

It's possible to work around (1), at least we could use the module if it is importable, but I don't see a way to work around (2) without lots of hacks that I'd rather not go into.

If it helps, you can import other modules into the script and mock objects in those modules. Any module that you can import into the script and into the test you can mock (and I added a test for this now), just not the script itself.

from pytest-console-scripts.

carmocca avatar carmocca commented on July 30, 2024

I figured it was a hard limitation. Thanks for the quick response!

Also, great job on the plugin πŸ‘

from pytest-console-scripts.

kvas-it avatar kvas-it commented on July 30, 2024

Also, great job on the plugin πŸ‘

Thank you!

from pytest-console-scripts.

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.