Для I Python run magi c опция игнорирования SystemExist не работает с модулями - PullRequest
0 голосов
/ 13 апреля 2020

Документы для состояния опции %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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...