模拟测试try / except with print语句

时间:2017-07-13 14:24:27

标签: python python-2.7 mocking python-mock

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

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

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

1 个答案:

答案 0 :(得分:0)

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

例如,您可以在测试中修补sys.exit方法,然后声明它被调用如下:

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

对于print语句,您可以模拟sys.stdout调用。可以在Python cookbook书中找到一个非常简洁的示例,因此我不会将其粘贴到此处。