assert_call_with失败,并显示空错误消息

时间:2019-01-29 08:30:07

标签: python mocking python-unittest

我正在尝试学习python的测试工具,并设置了@patch()的非常简单的用法。

我做了一个非常简单的函数,它什么也不做(但是也不会引发错误):

aULR = "https://example.com"

def getURL():
    with urllib.request.urlopen(aULR) as f:
        pass

然后我修补urlopen并使用以下命令调用函数:

@patch('urllib.request.urlopen')
def test(MockClass1):
    getURL()
    assert MockClass1.assert_called_with('test')

test()

此操作失败,并带有我希望的断言错误:

AssertionError: Expected call: urlopen('test')
Actual call: urlopen('https://example.com')

但是当我在测试中通过以下正确的网址时:

@patch('urllib.request.urlopen')
def test(MockClass1):
    getURL()
    assert MockClass1.assert_called_with('https://example.com')

test()

我仍然收到错误消息,但这一次是无用的AssertionError,没有消息:

AssertionError: 

我对应该如何执行此操作有些不确定,所以我不确定这里发生了什么。为什么此测试仍然失败,为什么我会得到一个空错误?

1 个答案:

答案 0 :(得分:2)

删除开头的assert,只需输入:

MockClass1.assert_called_with('https://example.com')

assert_called_with返回错误的内容,可能是None,而assert None则引发了AssertionError