@@ -34,6 +34,12 @@ def pytest_addoption(parser):
34
34
dest = "attach_capture" ,
35
35
help = "Do not attach pytest captured logging/stdout/stderr to report" )
36
36
37
+ parser .getgroup ("reporting" ).addoption ('--inversion' ,
38
+ action = "store" ,
39
+ dest = "inversion" ,
40
+ default = False ,
41
+ help = "Run tests not in testplan" )
42
+
37
43
def label_type (type_name , legal_values = set ()):
38
44
def a_label_type (string ):
39
45
atoms = set (string .split (',' ))
@@ -165,8 +171,9 @@ def select_by_labels(items, config):
165
171
return items , []
166
172
167
173
168
- def select_by_testcase (items ):
174
+ def select_by_testcase (items , config ):
169
175
planned_tests = get_testplan ()
176
+ is_inversion = config .option .inversion
170
177
171
178
if planned_tests :
172
179
@@ -180,8 +187,8 @@ def is_planed(item):
180
187
planed_item_string_id in allure_string_ids
181
188
or planed_item_selector == allure_full_name (item )
182
189
):
183
- return True
184
- return False
190
+ return True if not is_inversion else False
191
+ return False if not is_inversion else True
185
192
186
193
selected , deselected = [], []
187
194
for item in items :
@@ -192,7 +199,7 @@ def is_planed(item):
192
199
193
200
194
201
def pytest_collection_modifyitems (items , config ):
195
- selected , deselected_by_testcase = select_by_testcase (items )
202
+ selected , deselected_by_testcase = select_by_testcase (items , config )
196
203
selected , deselected_by_labels = select_by_labels (selected , config )
197
204
198
205
items [:] = selected
0 commit comments