allow to dynamically define markers (e.g. during pytest_collection_modifyitems)
This commit is contained in:
parent
c790490387
commit
a4909a0ae4
|
@ -2,6 +2,8 @@ Changes between 2.3.3 and 2.3.4.dev
|
|||
-----------------------------------
|
||||
|
||||
- fix issue91 - add/discuss package/directory level setups in example
|
||||
- allow to dynamically define markers/keywords via
|
||||
item.keywords[...]=assignment
|
||||
|
||||
Changes between 2.3.2 and 2.3.3
|
||||
-----------------------------------
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
#
|
||||
__version__ = '2.3.4.dev1'
|
||||
__version__ = '2.3.4.dev2'
|
||||
|
|
|
@ -73,7 +73,7 @@ class BoolDict:
|
|||
return name in self._mydict
|
||||
|
||||
def matchmark(colitem, matchexpr):
|
||||
return eval(matchexpr, {}, BoolDict(colitem.obj.__dict__))
|
||||
return eval(matchexpr, {}, BoolDict(colitem.keywords))
|
||||
|
||||
def pytest_configure(config):
|
||||
if config.option.strict:
|
||||
|
|
2
setup.py
2
setup.py
|
@ -48,7 +48,7 @@ def main():
|
|||
name='pytest',
|
||||
description='py.test: simple powerful testing with Python',
|
||||
long_description = long_description,
|
||||
version='2.3.4.dev1',
|
||||
version='2.3.4.dev2',
|
||||
url='http://pytest.org',
|
||||
license='MIT license',
|
||||
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
|
||||
|
|
|
@ -137,6 +137,30 @@ def test_mark_option(spec, testdir):
|
|||
assert len(passed) == len(passed_result)
|
||||
assert list(passed) == list(passed_result)
|
||||
|
||||
@pytest.mark.multi(spec=[
|
||||
("interface", ("test_interface",)),
|
||||
("not interface", ("test_nointer",)),
|
||||
])
|
||||
def test_mark_option_custom(spec, testdir):
|
||||
testdir.makeconftest("""
|
||||
import pytest
|
||||
def pytest_collection_modifyitems(items):
|
||||
for item in items:
|
||||
if "interface" in item.nodeid:
|
||||
item.keywords["interface"] = pytest.mark.interface
|
||||
""")
|
||||
testdir.makepyfile("""
|
||||
def test_interface():
|
||||
pass
|
||||
def test_nointer():
|
||||
pass
|
||||
""")
|
||||
opt, passed_result = spec
|
||||
rec = testdir.inline_run("-m", opt)
|
||||
passed, skipped, fail = rec.listoutcomes()
|
||||
passed = [x.nodeid.split("::")[-1] for x in passed]
|
||||
assert len(passed) == len(passed_result)
|
||||
assert list(passed) == list(passed_result)
|
||||
|
||||
class TestFunctional:
|
||||
|
||||
|
@ -386,7 +410,6 @@ class TestKeywordSelection:
|
|||
item = dlist[0].items[0]
|
||||
assert item.name == "test_one"
|
||||
|
||||
|
||||
def test_keyword_extra(self, testdir):
|
||||
p = testdir.makepyfile("""
|
||||
def test_one():
|
||||
|
|
Loading…
Reference in New Issue