|
5 | 5 |
|
6 | 6 | import pytest
|
7 | 7 |
|
| 8 | +_automark = False |
| 9 | + |
| 10 | + |
| 11 | +def _get_bool(value): |
| 12 | + """Evaluate string representation of a boolean value. |
| 13 | + """ |
| 14 | + if value: |
| 15 | + if value.lower() in ["0", "no", "n", "false", "f", "off"]: |
| 16 | + return False |
| 17 | + elif value.lower() in ["1", "yes", "y", "true", "t", "on"]: |
| 18 | + return True |
| 19 | + else: |
| 20 | + raise ValueError("Invalid truth value '%s'" % value) |
| 21 | + else: |
| 22 | + return False |
| 23 | + |
8 | 24 |
|
9 | 25 | class DependencyItemStatus(object):
|
10 | 26 | """Status of a test item in a dependency manager.
|
@@ -45,8 +61,7 @@ def getManager(cls, item, scope='module'):
|
45 | 61 | def __init__(self):
|
46 | 62 | self.results = {}
|
47 | 63 |
|
48 |
| - def addResult(self, item, marker, rep): |
49 |
| - name = marker.kwargs.get('name') |
| 64 | + def addResult(self, item, name, rep): |
50 | 65 | if not name:
|
51 | 66 | if item.cls:
|
52 | 67 | name = "%s::%s" % (item.cls.__name__, item.name)
|
@@ -83,16 +98,28 @@ def depends(request, other):
|
83 | 98 | manager.checkDepend(other, item)
|
84 | 99 |
|
85 | 100 |
|
| 101 | +def pytest_addoption(parser): |
| 102 | + parser.addini("automark_dependency", |
| 103 | + "Add the dependency marker to all tests automatically", |
| 104 | + default=False) |
| 105 | + |
| 106 | + |
| 107 | +def pytest_configure(config): |
| 108 | + global _automark |
| 109 | + _automark = _get_bool(config.getini("automark_dependency")) |
| 110 | + |
| 111 | + |
86 | 112 | @pytest.hookimpl(tryfirst=True, hookwrapper=True)
|
87 | 113 | def pytest_runtest_makereport(item, call):
|
88 | 114 | """Store the test outcome if this item is marked "dependency".
|
89 | 115 | """
|
90 | 116 | outcome = yield
|
91 | 117 | marker = item.get_marker("dependency")
|
92 |
| - if marker is not None: |
| 118 | + if marker is not None or _automark: |
93 | 119 | rep = outcome.get_result()
|
| 120 | + name = marker.kwargs.get('name') if marker is not None else None |
94 | 121 | manager = DependencyManager.getManager(item)
|
95 |
| - manager.addResult(item, marker, rep) |
| 122 | + manager.addResult(item, name, rep) |
96 | 123 |
|
97 | 124 |
|
98 | 125 | def pytest_runtest_setup(item):
|
|
0 commit comments