fix addmarker - extract mark from markdecorator

This commit is contained in:
Ronny Pfannschmidt 2018-06-12 14:49:54 +02:00
parent 4d0297b413
commit eb0c6a8287
2 changed files with 16 additions and 2 deletions

View File

@ -173,10 +173,12 @@ class Node(object):
chain.reverse()
return chain
def add_marker(self, marker):
def add_marker(self, marker, append=True):
"""dynamically add a marker object to the node.
:type marker: str or pytest.mark.*
``append=True`` whether to append the marker,
if false insert at position 0
"""
from _pytest.mark import MarkDecorator, MARK_GEN
@ -185,7 +187,10 @@ class Node(object):
elif not isinstance(marker, MarkDecorator):
raise ValueError("is not a string or pytest.mark.* Marker")
self.keywords[marker.name] = marker
self.own_markers.append(marker.mark)
if append:
self.own_markers.append(marker.mark)
else:
self.own_markers.insert(0, marker.mark)
def iter_markers(self, name=None):
"""

View File

@ -1132,3 +1132,12 @@ def test_addmarker_getmarker():
node.add_marker("b")
node.get_marker("a").combined
node.get_marker("b").combined
def test_addmarker_order():
node = Node("Test", config=mock.Mock(), session=mock.Mock(), nodeid="Test")
node.add_marker("a")
node.add_marker("b")
node.add_marker("c", append=False)
extracted = [x.name for x in node.iter_markers()]
assert extracted == ["c", "a", "b"]