Документы для состояния опции %run
magi c -e
:
игнорировать вызовы sys.exit () или исключения SystemExit в выполняемом скрипте. Это особенно полезно, если I Python используется для запуска юнит-тестов, которые всегда завершаются вызовом sys.exit (). В таких случаях вы заинтересованы в выводе результатов теста, а не в том, чтобы увидеть трассировку модуля unittest.
Это работает при запуске сценариев, но, похоже, не работает при запуске модулей. Поэтому, когда я набираю %run -e -m pytest
, я все равно получаю трассировку, когда тест завершается неудачно из-за SystemExit
, генерируемого pytest, что является случаем, упомянутым в документации выше, для которой -e
предназначен для адресации. Я знаю, что могу набрать! pytest
, но я не хочу ждать завершения pytest
, прежде чем я начну видеть результаты, и я также хочу добавить текущий каталог в путь поиска модуля.
Я запускаю I Python в Spyder, но поведение такое же, если я запускаю I Python из командной строки Windows. Есть ли способ сделать то, что я хочу, и избежать отвлекающего следа?
Я запустил следующий тест с %run -m pytest
с консоли spyder i python
import pytest
def test_fail():
assert 0
Вывод был:
============================= test session starts =============================
platform win32 -- Python 3.7.7, pytest-5.4.1, py-1.8.1, pluggy-0.13.1
rootdir: D:\home\shane\temp\pytest
collected 1 item
test_dummy.py F [100%]
================================== FAILURES ===================================
__________________________________ test_fail __________________________________
def test_fail():
> assert 0
E AssertionError
test_dummy.py:21: AssertionError
=========================== short test summary info ===========================
FAILED test_dummy.py::test_fail - AssertionError
============================== 1 failed in 0.03s ==============================
Traceback (most recent call last):
File "c:\opt\python37\lib\runpy.py", line 205, in run_module
return _run_module_code(code, init_globals, run_name, mod_spec)
File "c:\opt\python37\lib\runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "c:\opt\python37\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "c:\opt\python37\lib\site-packages\pytest\__main__.py", line 7, in <module>
raise SystemExit(pytest.main())
SystemExit: ExitCode.TESTS_FAILED