diff --git a/_pytest/mark/evaluate.py b/_pytest/mark/evaluate.py index f84d7455d..295373e17 100644 --- a/_pytest/mark/evaluate.py +++ b/_pytest/mark/evaluate.py @@ -1,6 +1,7 @@ import os import six import sys +import platform import traceback from . import MarkDecorator, MarkInfo @@ -67,7 +68,7 @@ class MarkEvaluator(object): pytrace=False) def _getglobals(self): - d = {'os': os, 'sys': sys, 'config': self.item.config} + d = {'os': os, 'sys': sys, 'platform': platform, 'config': self.item.config} if hasattr(self.item, 'obj'): d.update(self.item.obj.__globals__) return d diff --git a/changelog/3236.trivial.rst b/changelog/3236.trivial.rst new file mode 100644 index 000000000..75830d453 --- /dev/null +++ b/changelog/3236.trivial.rst @@ -0,0 +1 @@ +Add the usage of ``platform`` in ``pytest.mark.skipif`` \ No newline at end of file diff --git a/testing/test_skipping.py b/testing/test_skipping.py index db4e6d3f7..08581e905 100644 --- a/testing/test_skipping.py +++ b/testing/test_skipping.py @@ -612,6 +612,16 @@ class TestSkipif(object): ]) assert result.ret == 0 + def test_skipif_using_platform(self, testdir): + item = testdir.getitem(""" + import pytest + @pytest.mark.skipif("platform.platform() == platform.platform()") + def test_func(): + pass + """) + pytest.raises(pytest.skip.Exception, lambda: + pytest_runtest_setup(item)) + @pytest.mark.parametrize('marker, msg1, msg2', [ ('skipif', 'SKIP', 'skipped'), ('xfail', 'XPASS', 'xpassed'),