1
我寫了一個自定義的hamcrest匹配器,用於檢查列表中的文件是否已被複制。該列表可能很長(1000個文件+),所以如果缺少一個文件,我不希望匹配器打印出整個列表。pyhamcrest修改「got」說明
我可以爲丟失的文件進行自定義描述,但是有沒有辦法修改Got: <list of files>
部分?
完整代碼:
class FilesHaveBeenCopied(BaseMatcher):
def __init__(self):
self.missing = None
def _matches(self, source_files):
try:
self.missing = next(f for f in source_files if not os.path.exists(target_of(f)))
except StopIteration:
return True
return False
def describe_to(self, description):
description.append_text("file to be copied '{0}'".format(self.missing))
def have_been_copied():
return FilesHaveBeenCopied()
用法:
assert_that(self.source_files, have_been_copied())
完美。我將它作爲一個類成員實現:'describe_mismatch(self,actual,description)'。完全按照我的意願工作,謝謝! – Stefan
@斯特凡非常棒,謝謝。自從我使用Python以來,這已經太久了。 :) –