【问题标题】:Protecting nose against Python interpreter crashes保护鼻子免受 Python 解释器崩溃
【发布时间】:2013-01-15 08:26:15
【问题描述】:

我们有一堆调用 Python C/C++ 绑定的测试。我们用鼻子运行这些测试:

nosetests myapp
.....
----------------------------------------------------------------------
Ran 5 tests in 0.009s

有时,我们的绑定有问题,导致 Python 解释器崩溃,例如,在第 3 次测试时:

test03_badcode (myapp.tests.test_badcode) ... Segmentation fault

问题:从中恢复的最佳方法是什么?理想情况下,我希望鼻子自己处理这些崩溃,但我知道这是不可能实现的。我想到的下一个解决方案是记下测试并重新启动鼻子,现在跳过糟糕的测试。在我的示例中,这意味着执行测试 1、2、4 和 5,但 测试 3。有没有办法用鼻子以编程方式实现这一点?还有其他更好的想法吗?

【问题讨论】:

    标签: python unit-testing boost-python nose python-bindings


    【解决方案1】:

    与鼻子一样,有一个插件。 Insulate 将在单独的进程中运行每个测试。这会减慢速度,但可以保证一个测试中的崩溃不会影响其他测试。

    【讨论】:

    • 很好,但不知何故,这个插件在跳过的测试中不能正常工作。我收到了一个例外RuntimeError: Protocol error in master/slave communications。你有一个简单的解决方法吗?
    • 查看模块后,我们创建了支持跳过测试的a version of the plugin。这似乎在我们的构建中正常工作。
    猜你喜欢
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    相关资源
    最近更新 更多