私は自分のスクリプトに関数の単体テストを書いていますが、モックファイルの作成には問題があります。 私の関数はファイル名を取り、それの出力はmd5です。私はエラーを取得するしかしPython:unittestingのためにファイルを偽装する
import mock
class Function_to_test_TestCase(unittest.TestCase):
def test_filename(self):
with mock.patch('__main__.open', mock.mock_open(read_data=''), create=True) as m:
md5_value=my_script.function_to_get_md5_value(m)
:
with open(fname, "rb") as f:
TypeError: coercing to Unicode: need string or buffer, MagicMock found
はこのように、関連するモックMD5値とモックのファイルを作成するための正しい方法をされた時点での私のunittestの
def md5(file_name):
#Function to return the md5 value of a file
hash_md5 = hashlib.md5()
with open(fname, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
hash_md5.update(chunk)
return hash_md5.hexdigest()
? アドバイスありがとうございます!
あなたは説明できます? これがあなたのmd5関数であれば、なぜfilenameの代わりにmockの引数で呼び出すのですか? –
@AndreyBelyakこんにちは、これは、ファイルのディレクトリをスキャンし、各ファイル名とmd5値を含むマニフェストファイルを生成するより広いスクリプト内の関数です。私は自分のスクリプトで各関数の単体テストを作成中ですが、私の関数をテストするためにユニットテストのシナリオで単純なファイルを作成する方法があるのだろうかと思っていました – Catherine
私は最も簡単な方法は、サンプルデータを含むファイル。テストフォルダ内に配置してvcsに追加することができます。 –