首页 > 解决方案 > 在 unitttest 中导入时执行两次的函数

问题描述

由于某种原因,函数 all_files_df() 在下面的代码中执行了两次。len(data) 应该是 4,但它返回 8。

我想补充:

if __name__ == '__main__':
    unittest.main()

在底部会解决这个问题,但显然我需要做其他事情。请参阅下面的代码...

import unittest
from csv_file_testing import all_files_one_df


class TestCSVMethods(unittest.TestCase):

    def test_df_length(self):
        data = all_files_one_df()
        self.assertEqual(4, len(data))



if __name__ == '__main__':
    unittest.main()

单独运行 all_files_one_df() 时,它运行良好并返回 4 行

all_files_one_df() 循环遍历一个文件夹并将 CSV 文件连接到一个数据帧中。在这种情况下,每个 CSV 文件包含 2 行数据。2 个文件 x 2 行 = 总共 4 行

def all_files_one_df():
    for file in all_files:
        df = pd.read_csv(file, index_col=None, header=0)
        li.append(df)

    frame = pd.concat(li, axis=0, ignore_index=True)
    return frame

标签: pythonfunctionimport

解决方案


弄清楚了。问题出在我正在导入的文件上,而不是 unittest 文件本身。

我需要在底部进行更改:

all_files_one_df()

对此:

if __name__ == '__main__':
    all_files_one_df()

现在看来很明显了。之前导入文件也在执行它。它需要检查到位以确保它不会


推荐阅读