I want to skip an entire test if imports don't work:
try:
import networkx
except:
import pytest
pytest.skip()
This works fine with python-2.7 and python-3.5, both using pytest-2.8.1. When I try to run the code in python-3.6 with pytest-3.0.5 I get the following error:
Using pytest.skip outside of a test is not allowed. If you are trying to decorate a test function, use the @pytest.mark.skip or @pytest.mark.skipif decorators instead.
How can I write code/tests that works on all mentioned environments? I already tried to rewrite the except block like this but then it only works for the newest configuration:
try:
pytest.skip()
except:
pytestmark = pytest.mark.skip
The simplest way to skip a test function is to mark it with the skip decorator which may be passed an optional reason : @pytest. mark.
We can run a specific test file by giving its name as an argument. A specific function can be run by providing its name after the :: characters. Markers can be used to group tests. A marked grouped of tests is then run with pytest -m .
You can mark a test with the skip and skipif decorators when you want to skip a test in pytest .
PyTest offers a command-line option called maxfail which is used to stop test suite after n test failures. For example, to stop the test suite after n test failures, where the value of n is 1.
You can use pytest.skip
with allow_module_level=True
to skip the remaining tests of a module:
pytest.skip(allow_module_level=True)
See example in: https://docs.pytest.org/en/latest/how-to/skipping.html#skipping-test-functions
I figured it out myself. The skip block needs to check the version of pytest:
if pytest.__version__ < "3.0.0":
pytest.skip()
else:
pytestmark = pytest.mark.skip
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With