Я пытаюсь изучить инструменты тестирования 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')
Но когда я передаю правильный URL в тесте с:
@patch('urllib.request.urlopen')
def test(MockClass1):
getURL()
assert MockClass1.assert_called_with('https://example.com')
test()
Я все еще получаю сообщение об ошибке, но на этот раз это бесполезная ошибка AssertionError без сообщения:
AssertionError:
Я немного неуверен в том, как я должен это делать, поэтому я неуверен, что здесь происходит.Почему этот тест по-прежнему не проходит и я получаю пустую ошибку?