【发布时间】:2019-08-06 00:53:59
【问题描述】:
为此绞尽脑汁。我想在下面模拟生成器方法self.api.redditor(username).comments.new(limit=num)和self.api.redditor(username).submissions.new(limit=num),其中self.api被分配给一个类实例,如self.api = PrawReddit()
我正在尝试测试结果的大小:self.assertEqual(len(result), 5)
到目前为止,我尝试了MockPraw.return_value.redditor.return_value.comments.return_value.new.return_value.__iter__.return_value = iter(['c' * 10]),但测试失败,AssertionError: 0 != 5
非常感谢任何提示。
def get_comments_submissions(self, username, num=5):
"""Return max `num` of comments and submissions by `username`."""
coms = [
dict(
title=comment.link_title,
text=comment.body_html,
subreddit=comment.subreddit_name_prefixed,
url=comment.link_url,
created=datetime.fromtimestamp(comment.created_utc, pytz.utc),
)
for comment in self.api.redditor(username).comments.new(limit=num)
]
subs = [
dict(
title=submission.title,
text=submission.selftext_html,
subreddit=submission.subreddit_name_prefixed,
url=submission.url,
created=datetime.fromtimestamp(submission.created_utc, pytz.utc),
)
for submission in self.api.redditor(username).submissions.new(limit=num)
]
return coms + subs if len(coms + subs) < num else (coms + subs)[:num]
【问题讨论】:
-
你用 mock 试过什么?
-
类似这样的东西:MockPraw.return_value.redditor.return_value.cmets.return_value.new.return_value.__iter__.return_value = iter(['c' * 10])
标签: python unit-testing mocking generator python-unittest