長時間リスナー、初回呼び出し元。Python:どのように再帰的メソッドをテストできますか?
:私はいくつかのfind
様な機能を持っている特定のディレクトリに(scandir
を使用して)再帰的なスキャンを実行のpython 2.7方法を書いている(つまり、あなたはmindepth
とmaxdepth
を指定することができます)
def scan_tree(self, search_path, max_levels=-1, min_levels=-1, _level=0):
"""Recursively yield DirEntry objects for given directory."""
max_out = max_levels > -1 and _level == max_levels
min_out = min_levels > -1 and _level <= min_levels
for entry in scandir(search_path):
if entry.is_dir(follow_symlinks=False) and not max_out:
for child in self._scan_tree(entry.path, max_levels,
min_levels, _level + 1):
if not child.is_dir(follow_symlinks=False):
yield child
elif not min_out:
yield entry
事があり、私は私の人生のために私にmock
の両方に適切に再帰呼び出しscandir
とテスト私の最低限の動作を許可するユニットテストを書くための最良の/適切な方法を把握することはできません最大スキャンパラメータeters。
通常、私は(私はすでにそれを適切に検証可能なバージョンを書いた)スキャンを行うためにscandir.walk
を使用したいが、私は本当にscandir
が吐き出すDirEntry
インスタンスに関する情報を必要とします。
すべてのアイデアをいただければ幸いです。ありがとう!
私は、 'scandir'を基にして(' '(root、dir_entries、file_entries)のタプルを返す)' 'walk'のようなメソッドを設定して、テスト可能な状態に戻ることができました。最初は 'walk 'のために働いたものと同様の'模擬'戦略ですが、私は最初の再帰的な問題をどう扱うかを考えていきたいと思います。 ありがとう! – hoafaloaf