我正在开发一个 Reddit 机器人来学习 Python 中的 TDD。
我有一个带有类的模块是这样的:
from praw import Reddit
class Bot():
def __init__(self):
self.reddit = Reddit(user_agent='myBot')
self.reddit.login('fake', 'fakePassword')
在我的测试套件中,我有一个这样的设置方法:
@patch('bot.bot.Reddit.login')
def setUp(self, mocked_reddit):
self.mocked_reddit = mocked_reddit
self.subject = Bot()
..和这样的测试:
def should_call_reddit_login_when_initialized_test(self):
self.assertTrue(self.mocked_reddit.assert_called_with('fake', 'fakePassword'))
我的补丁似乎只部分起作用。它实际上并没有调用 Reddit API,这很好。然而,断言总是错误的。
line 22 in should_call_reddit_login_when_initialized_test
self.assertTrue(self.mocked_reddit.assert_called_with('fake', 'fakePassword'))
AssertionError: None is not true
理想情况下,我可以模拟整个 Reddit 类,并断言稍后使用预期参数调用这些方法。我怎样才能做到这一点?
请您参考如下方法:
assert_called_with 是断言。只要它没有触发,即引发 AssertionError 异常,就可以了。您无需检查其返回值,它始终为 None。
