0

我有一个项目,我需要编写一个模块,其中包含一个函数来检查当前工作目录的内容并打印出每个扩展名(“.txt”、“.doc”等)有多少文件的计数

然后我需要编写一个单独的模块来通过测试该函数是否给出正确的结果来验证。

import os
from collections import Counter

filenames = {}
extensions = []
file_counts = {}
extensions2 = {}

def examine(): 

    for filename in filenames:
        f = open(filename, "w")
        f.write("Some text\n")
        f.close()
        name, extension = filename.split('.')
        extensions.append(extension)

    extensions2 = dict(Counter(extensions))

    return extensions2

这是测试:

import unittest
import tempfile
import os
import shutil
import examine_directory as examdir

class TestExamine(unittest.TestCase):
    def setUp(self):
        self.origdir = os.getcwd()
        self.dirname = tempfile.mkdtemp("testdir")
        os.chdir(self.dirname)

    examdir.filenames = {"this.txt", "that.txt", "the_other.txt","this.doc","that.doc","this.pdf","first.txt","that.pdf"}

def test_dirs(self):
    expected = {'pdf': 2, 'txt': 4, 'doc': 2}
    self.assertEqual(examdir.extensions2, expected, "Creation of files not possible")

def tearDown(self):
    os.chdir(self.origdir)
    shutil.rmtree(self.dirname) 

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

我被困住了,我需要一些帮助。我收到一个 assertEqual 错误。

提前致谢。

4

1 回答 1

1

您收到 assertEqual 错误,因为examdir.extensions2与 不同expected,这应该是您的第一个线索。尝试在断言调用之前打印出两者的值以验证这一点。

其次,我假设您在此处列出的第一个文件称为examine_directory? 查看那个文件,我看到 extensions2 被初始化为一个空的 dictionary {}。检查函数返回名为 extensions2的局部变量的值,但是:

  1. 它不会将其分配给您的全局字典(我认为这是您所期望的行为)
  2. 检查()不会从您的测试脚本中调用
于 2012-09-20T13:50:46.780 回答