@@ -156,7 +156,13 @@ def select_by_labels(items, config):
156
156
config .option .allure_stories ,
157
157
config .option .allure_ids ,
158
158
config .option .allure_severities )
159
- return filter (lambda item : arg_labels & set (allure_labels (item )) if arg_labels else True , items )
159
+ if arg_labels :
160
+ selected , deselected = [], []
161
+ for item in items :
162
+ selected .append (item ) if arg_labels & set (allure_labels (item )) else deselected .append (item )
163
+ return selected , deselected
164
+ else :
165
+ return items , []
160
166
161
167
162
168
def select_by_testcase (items ):
@@ -177,11 +183,19 @@ def is_planed(item):
177
183
return True
178
184
return False
179
185
180
- return [item for item in items if is_planed (item )]
186
+ selected , deselected = [], []
187
+ for item in items :
188
+ selected .append (item ) if is_planed (item ) else deselected .append (item )
189
+ return selected , deselected
181
190
else :
182
- return items
191
+ return items , []
183
192
184
193
185
194
def pytest_collection_modifyitems (items , config ):
186
- items [:] = select_by_testcase (items )
187
- items [:] = select_by_labels (items , config )
195
+ selected , deselected_by_testcase = select_by_testcase (items )
196
+ selected , deselected_by_labels = select_by_labels (selected , config )
197
+
198
+ items [:] = selected
199
+
200
+ if deselected_by_testcase or deselected_by_labels :
201
+ config .hook .pytest_deselected (items = [* deselected_by_testcase , * deselected_by_labels ])
0 commit comments