Skip и xfail

pytest.mark.xfail сценарии запускаются. Если xfail помечен strict=True, неожиданный pass превращается в failure и может уронить job. Если strict=False, XPASS показывается в отчёте, но сам по себе не валит job.

pytest.mark.skip сценарии по умолчанию не запускаются. Есть два локальных переключателя:

.venv/bin/python -m pytest tests/api --run_skip --timeout 600 -q .venv/bin/python -m pytest tests/api --run_all_skipped --timeout 600 -q

--run_skip снимает только прямые skip markers с выбранных items и запускает выбранный suite. skipif и унаследованные skip-условия он не превращает в runnable tests. --run_all_skipped выбирает только items с прямым skip marker и затем снимает этот marker. Текущая фильтрация --run_all_skipped -k ... узкая: она сравнивает -k с basename файла, а не с обычным pytest expression. Считайте это legacy helper, а не универсальной переменной выбора.