我unittest
用来测试我的终端交互实用程序。我有 2 个上下文非常相似的测试用例:一个测试正确输出,另一个测试交互模式下用户命令的正确处理。虽然,这两种情况都模拟sys.stdout
以抑制实际输出(输出也在交互工作过程中执行)。
考虑以下:
class StdoutOutputTestCase(unittest.TestCase):
"""Tests whether the stuff is printed correctly."""
def setUp(self):
self.patcher_stdout = mock.patch('sys.stdout', StringIO())
self.patcher_stdout.start()
# Do testing
def tearDown(self):
self.patcher_stdout.stop()
class UserInteractionTestCase(unittest.TestCase):
"""Tests whether user input is handled correctly."""
def setUp(self):
self.patcher_stdout = mock.patch('sys.stdout', StringIO())
self.patcher_stdout.start()
# Do testing
def tearDown(self):
self.patcher_stdout.stop()
我不喜欢的是上下文设置在这里重复了两次(现在;随着时间的推移可能会更多)。
有没有为这两种情况设置共同上下文的好方法?可以unittest.TestSuite
帮助我吗?如果是,如何?我找不到任何常见上下文设置的示例。
我也考虑过定义一个 function setup_common_context
,这两种情况都会被调用setUp
,但它仍然是重复的。