python - How to avoid execution of Python UnitTest method "addCleanup" after test case failure?
问题描述
I have the following Python UnitTest:
import unittest
class SimpleTestCases(unittest.TestCase):
def setUp(self):
print "\nmessage from function: setUp"
self.createResource()
self.addCleanup(self.cleanResource)
def createResource(self):
print "\nmessage from function: createResource"
def cleanResource(self):
print "\nmessage from function: cleanResource"
def test_func1(self):
print "message from function: test_func1::start"
print "message from function: test_func1::end"
def test_func2(self):
print "message from function: test_func2::start"
self.assertTrue(False)
print "message from function: test_func2::end"
def test_func3(self):
print "message from function: test_func3::start"
print "message from function: test_func3:end"
if __name__ == "__main__":
unittest.main()
After the above code exution with option "-f" functions are executed in below order
python -m unittest -fb test_cases
message from function: setUp
message from function: createResource
message from function: test_func1::start
message from function: test_func1::end
message from function: cleanResource
.
message from function: setUp
message from function: createResource
message from function: test_func2::start
F
message from function: cleanResource
======================================================================
FAIL: test_func2 (test_cases.SimpleTestCases)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_cases.py", line 23, in test_func2
self.assertTrue(False)
AssertionError: False is not true
----------------------------------------------------------------------
Ran 2 tests in 0.000s
FAILED (failures=1)
It will stop the execution after first failure but will call the "addCleanup" method.
I want to avoid to call "addCleanup" method when test function "test_func2" so the created resources can be used for debugging purpuse.
Is there any command-line option or workaround available?
解决方案
作为最简单的方法之一 - 只是将输入(Python 2 的 raw_input)放在 cleanResource 方法的开头。因此执行将停止,直到按下 Enter 键。
def cleanResource(self):
temp = raw_input('wait before cleanResource')
print("\nmessage from function: cleanResource")
另一种方法是在调试器中使用断点
import pdb
接着
pdb.set_trace()
需要的地方
推荐阅读
- node.js - 从 Bot Framework botbuilder 开始并获得断言错误
- html - 如何使用css为一个段落添加多种样式
- azure-active-directory - 尝试删除 azure bot 密码时引发“此版本中不允许更新融合应用程序”异常
- android - 如何使用反应导航在反应原生中加载相同的最后一个组件类?
- c# - Windows 应用程序(智能设备项目)。如何截屏?
- python-3.x - .format 中的元组索引超出范围
- r - 使用 y[i] GAMMA(贝叶斯)的 JAGS 多元线性回归
- swift - 此错误线程 1:致命错误:在展开可选值时意外发现 nil
- php - 何时使用 trigger_error() 与 throw new Error()?
- r - 使用 ifelse 添加基于其他列的新列和标签