question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Patching getfuncargnames. Adding fixtures to argnames list

See original GitHub issue

I am writing plug-in for the pytest. I want to make a hook that will trigger a fixture that is not passed as an argument in test and is not specified in usefixture. I want to run it after fixture with autouse flag and in front of other fixtures. The condition for launching will be checking for the presence of a custom marker. It should look like this:

this is an abstract example

def open_fixture(autouse=True):
    open_page()

@pytest.fixture
def filling_fixture():
    filling_fields()

@pytest.fixture
def click_fixture():
    click_button()

@pytest.mark.my_marker
def test(clik_fixture):
    pass

#all three fixtures must be started in turn

I decided to change the FixtureDef class attribute and add my fixture to self.argnames. For this i wanted to make a monkey patch and wrap getfuncargnames

    def wrapper(*args, **kwargs):
        if [mark.name for mark in func.own_markers if "my_marker" in mark.name]:
            return func(*args, **kwargs).insert("filling_fixure")
    return wrapper

But I can’t fix this module. I didn’t want to understand what the problem it was, since the monkey patch is not a very good solution. I’m sure pytest has a simpler solution to my problem.

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:7 (5 by maintainers)

github_iconTop GitHub Comments

1reaction
symonkcommented, Apr 16, 2020

you can probably also load an internal plugin via pytest_plugins=[‘’]

1reaction
SalmonModecommented, Apr 16, 2020

@vkutepov in order for a fixture to be visible to another fixture, it must be defined in the same scope, a parent scope (which considers conftest files), or installed in a plugin. Normally, common fixtures would be placed in conftest files in the appropriate place in the file structure. If you want to go the plugin route, you’ll need to make an actual installable plugin and register it with the appropriate pytest entry point. You can check out pytest-django for an example of how to do this.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Adding fixtures to the show - grandMA2 User Manual
Quick steps: Press Setup and Patch & Fixture Schedule to enter the EditSetup menu. Add a new or select an existing layer. In...
Read more >
1.21 Adding and Patching fixtures using the command line
1.21 Adding and Patching fixtures using the command line. 17,281 views17K views. Nov 15, 2010. 13. Dislike. Share. Save. M-Series Controller.
Read more >
Patching Fixtures Using The Commandline - ONYX 4.8
For a list of all possible patch command line combinations, see the Command ... The full command line syntax for adding fixtures to...
Read more >
Patching New Fixtures or Dimmers - Avolites Manual
Press Fixtures. Patch Menu; Select the correct fixture manufacturer from the softkeys (Previous and Next page through the list of manufacturers) ...
Read more >
5.6.1 Patching DMX Protocol Fixtures - ETC
Select a universe from the Fixture Patch window. To patch to a universe that isn't listed, press the Add Universe(s) button. Click or...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found