Background I am running a py.test with a fixture in a conftest file. You can see the code below(this all works fine): example_test.py import pytest @pytest.fixture def platform(): return "ios" @pytest.mark.skipif("platform == 'ios'") def test_ios(platform): if platform != 'ios': raise Exception('not ios') def test_android_external(platform_external): if platform_external != 'android': raise Exception('not android') conftest.py import pytest @pytest.fixture def platform_external(): return "android" Problem Now I want to be able to skip some tests that do not apply to my current test-run. In my example I am running tests either for iOS or Android (This is just for demonstration purposes only and could be any other expression). Unfortunately I cannot get ahold of (my externally defined fixture) platform_external in the skipif statement. When I run the code below I receive the following exception: NameError: name 'platform_external' is not defined. I don't know if this is a py.test bug as locally defined fixtures are working. add-on for example_test.py @pytest.mark.skipif("platform_external == 'android'") def test_android(platform_external): """This test will fail as 'platform_external' is not available in the decorator. It is only available for the function parameter.""" if platform_external != 'android': raise Exception('not android') So I thought I will just create my own decorator, just to see that it won't receive the fixtures as parameters: from functools import wraps def platform_custom_decorator(func): @wraps(func) def func_wrapper(*args, **kwargs): return func(*args, **kwargs) return func_wrapper @platform_custom_decorator def test_android_2(platform_external): """This test will also fail as 'platform_external' will not be given to the decorator.""" if platform_external != 'android': raise Exception('not android') Question How can I define a fixture in a conftest file and use it to (conditionally) skip a test? Continue reading...