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

examdir.extensions2と同じではないため、 assertEqual エラーが発生していexpectedます。これが最初の手がかりになるはずです。これを確認するために、アサート呼び出しの前に両方の値を出力してみてください。

次に、ここにリストした最初のファイルはexamine_directory? そのファイルを見ると、 extensions2 が空の Dictionary に初期化されていることがわかります{}。この関数は、extensions2というローカル変数の値を返しますが、次のようになります。

  1. それはあなたのグローバル辞書に割り当てられません(それはあなたが期待している動作だと思います)
  2. inspect() がテスト スクリプトから呼び出されない
于 2012-09-20T13:50:46.780 に答える