Add the ability to use platform in pytest.mark.skipif

This commit is contained in:
Jeffrey Rackauckas 2018-02-25 22:38:25 -08:00
parent da3f4045e7
commit 307cd6630f
3 changed files with 13 additions and 1 deletions

View File

@ -1,6 +1,7 @@
import os import os
import six import six
import sys import sys
import platform
import traceback import traceback
from . import MarkDecorator, MarkInfo from . import MarkDecorator, MarkInfo
@ -67,7 +68,7 @@ class MarkEvaluator(object):
pytrace=False) pytrace=False)
def _getglobals(self): 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'): if hasattr(self.item, 'obj'):
d.update(self.item.obj.__globals__) d.update(self.item.obj.__globals__)
return d return d

View File

@ -0,0 +1 @@
Add the usage of ``platform`` in ``pytest.mark.skipif``

View File

@ -612,6 +612,16 @@ class TestSkipif(object):
]) ])
assert result.ret == 0 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', [ @pytest.mark.parametrize('marker, msg1, msg2', [
('skipif', 'SKIP', 'skipped'), ('skipif', 'SKIP', 'skipped'),
('xfail', 'XPASS', 'xpassed'), ('xfail', 'XPASS', 'xpassed'),