You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.6 KiB

import unittest
from unittest.mock import patch
import jieba
import wordcloud
import pandas as pd
class TestWordCloudGeneration(unittest.TestCase):
@patch('pandas.read_excel')
@patch('wordcloud.WordCloud.to_file')
def test_wordcloud_generation(self, mock_to_file, mock_read_excel):
# 模拟读取的 Excel 数据
mock_df = pd.DataFrame({
'AI': ['人工智能在发展', 'AI改变世界'],
'Machine learning': ['机器学习是AI的基础', '深度学习是其中之一']
})
mock_read_excel.return_value = mock_df
# 引入你需要测试的代码
df = pd.read_excel('top_ai_danmakus.xlsx')
# 将Excel所有列的数据拼接成一个长字符串
book = ''
for column in df.columns:
book += ' '.join(df[column].astype(str)) + ' '
# 使用jieba进行分词
book_list = jieba.lcut(book)
book_str = ' '.join(book_list)
# 创建词云对象
wc = wordcloud.WordCloud(
width=500,
height=500,
background_color='white',
stopwords={'main', 'Taipei', 'afraid', 'aiden', 'Britain'}, # 可添加不需要的停用词
font_path='msyh.ttc' # 设置中文字体路径
)
# 生成词云
wc.generate(book_str)
# 检查是否调用了保存词云的函数
wc.to_file('词云图.png')
# 验证 to_file 函数是否被调用
mock_to_file.assert_called_once_with('词云图.png')
if __name__ == '__main__':
unittest.main()