Answers:
单个测试方法或类都可以使用unittest.skip
装饰器禁用。
@unittest.skip("reason for skipping")
def test_foo():
print('This is foo test case.')
@unittest.skip # no reason needed
def test_bar():
print('This is bar test case.')
有关其他选项,请参阅文档“ 跳过测试和预期的失败”。
@unittest.skip
工作正常。
@unittest.skip
不起作用。
最新版本(2.7版)支持测试跳过/禁用,就像这样。您可以仅获取此模块并将其用于现有的Python安装中。它可能会工作。
在此之前,我曾经重命名过xtest_testname
要从中跳过的测试test_testname
。
这是一个快速的elisp脚本来执行此操作。我的elisp有点生锈,因此对于出现的任何问题我都表示歉意。未经测试。
(defun disable_enable_test ()
(interactive "")
(save-excursion
(beginning-of-line)
(search-forward "def")
(forward-char)
(if (looking-at "disable_")
(zap-to-char 1 ?_)
(insert "disable_"))))
专注于问题的“暂时禁用”部分,最佳答案在某种程度上取决于用例。这里带给我的用例是我正在对功能进行测试驱动的开发。在此过程中,我连续编写测试,并经常在函数中使用断点进行调试。如果我每次运行测试运行程序时都运行所有测试,那么最终我会在已经生效的测试的断点处停止。我不需要添加“跳过”或修改测试名称或类似名称,因为当我编写完函数后,我希望所有测试都可以运行。如果使用“跳过”,则必须返回并“跳过”。
对于我的用例,解决方案在于测试运行器,而不是测试代码。我用pytest。使用pytest,可以从命令行轻松指定一个测试:
pytest PYTHON_FILENAME.TEST_CLASS.TEST_NAME
(将大写替换为您的值)。
我了解该问题是针对python-unitest的。我已经很久没有使用它了。如果它与pytest类似,我不会感到惊讶。如果没有,您可以轻松切换到pytest。您无需修改代码。只需安装它并更改您的测试运行器命令。
另外,我使用PyCharm Pro。在显示我的测试代码的页面上,每个测试的def旁边都有一个小图标。我可以单击该图标并单独运行该测试。
@unittest.SkipTest
行不通@unittest.skip