0
私はこのコードをテストしようとしている:ZipFileコンストラクタをどうやってモックできますか?
提供されたファイルの名前にCLASSES
が含まれている場合には、どのような私のために重要である
def read_classes(file):
if CLASSES in file:
classes = open(file, "rb").read()
else:
with ZipFile(file, "r") as archive:
classes = archive.read(CLASSES)
return classes
、open
が呼び出されます、そうでない場合は、ZipFile
が使用されます。しかし、私がすでにテストした最初の部分は、ZipFile
を模倣して、嘲笑されたオブジェクト(archive
)を返すことができません。read
というメソッドが呼び出されています。
@patch('zipfile.ZipFile')
def test_givenFile_whenReadClasses_expectArchiveCalled(self, mock_zipfile):
file = 'sample.file'
archive = Mock()
mock_zipfile.return_value = archive
read_classes(file)
archive.read.assert_called_once_with("classes.file")
を、私はそれが私に与えて、オリジナルのZipFile
コンストラクタを実行し続け、それを行うとき: IOError: [Errno 2] No such file or directory: 'sample.file'
正直な質問:なぜ気になるのですか?その機能は簡単ではありません。テストする必要がある場合は、プロジェクトにファイルのペアをチェックインし、それぞれを開き、比較するテストを作成します。 1つは圧縮されたファイルになり、1つはプレーンなファイルになります。 –
ハム、これは可能であることは分かっていましたが、将来もっと複雑なコードで自分自身を見たらどうなりますか?それを正しく模倣する方法がなければならないのですか? –