UnitTests具有捕获KeyboardInterrupt
的功能,完成测试然后报告结果。
-c, - catch
测试运行期间Control-C 等待当前测试结束,然后报告目前为止的所有结果。第二个 Control-C 引发正常的KeyboardInterrupt异常。
请参阅信号处理以了解提供此功能的功能。
c.f。 https://docs.python.org/2/library/unittest.html#command-line-options
在PyTest中, Ctrl + C 将停止会话。
有没有办法像UniTests一样:
KeyboardInterrupt
pytest-html
)由于
[编辑2016年11月11日]
我试图将钩子放在我的conftest.py
文件中,但它似乎无法正常工作和捕获。特别是,以下内容不会在toto.txt
中写任何内容。
def pytest_keyboard_interrupt(excinfo):
with open('toto.txt', 'w') as f: f.write("Hello")
pytestmark = pytest.mark.skip('Interrupted Test Session')
有人有新建议吗?
答案 0 :(得分:1)
您的问题可能出在您的挂钩执行顺序上,这样pytest在执行挂钩之前退出。如果在预先处理键盘中断的过程中发生未处理的异常,则会发生这种情况。
为确保钩子更快执行,请按照here所述使用tryfirst
或hookwrapper
。
以下内容应写在 conftest.py 文件中:
import pytest
@pytest.hookimpl(tryfirst=True)
def pytest_keyboard_interrupt(excinfo):
with open('toto.txt', 'w') as f:
f.write("Hello")
pytestmark = pytest.mark.skip('Interrupted Test Session')
答案 1 :(得分:0)
看看pytest的hookspec。
他们有关键字中断的钩子。
def pytest_keyboard_interrupt(excinfo):
""" called for keyboard interrupt. """