使用打印语句进行模拟测试 try/except

Mock testing try/except with print statements

我目前正在为我的 Python2 脚本编写单元测试。我在编写捕获 sys.exit 和打印语句以验证异常的测试用例时遇到问题。任何帮助将不胜感激。

except ParseError, e:
        if len(self.args.password) == 0:
            print('Some Message')

        print 'Login response error'
        sys.exit(1)

您可以模拟系统调用并对它们进行断言。

例如,您可以在测试中修补 sys.exit 方法,然后断言它的调用方式如下:

@patch('sys.exit')
def test_whatever(exit_mock):
    // force the exception
    assert exit_mock.call_count == 1

对于 print 语句,您可以模拟 sys.stdout 调用。 Python cookbook 书中有一个非常简洁的例子,这里就不复制粘贴了。