如何在模拟方法中反向引用对象

2024-04-25 12:13:27 发布

您现在位置:Python中文网/ 问答频道 /正文

方法:

def analyse_sentence(self, sentence, channel):
        found_top_news = 'top news' in sentence or 'trending news' in sentence
        if found_top_news:
            categories = []
            found_categories = SharedNewsUtils.extract_categories(sentence, categories)
            if found_categories:
                result = self.retrieve_top_news(categories[0])

单元测试:

    @patch('slack.realtime_bot.plugins.news_plugin.news.News.retrieve_top_news')
    @patch('utils.shared_news_utils.SharedNewsUtils.extract_categories')
    def test_analyse_sentence_calls_retrieve_top_news_if_found_categories(self, mck, mck2):
        mck.return_value = True
        sentence = 'trending news'
        channel = 'D'
        mck2.return_value = []
        self.news.analyse_sentence(sentence, channel)
        self.assertTrue(mck2.called)

此单元测试失败,并显示以下消息:

result = self.retrieve_top_news(categories[0])  IndexError: list index out of range

因为extract_categories是模拟的,并且在方法中注入了一个空的categories列表,所以我不知道如何模拟它,以防止列表稍后超出索引


Tags: 方法inselfiftopdefchannelextract