我已经编写了一个自定义的hamcrest匹配器,用于检查列表中的文件是否已被复制。列表可能很长(1000 files+),所以如果缺少一个文件,我不希望matcher打印出整个列表。
我可以对缺少的文件进行自定义描述,但是是否也有方法修改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())发布于 2014-02-19 03:10:04
重写describe_mismatch以覆盖全部实际值:
def describe_mismatch(self, actual, description):
description.append(self.missing)您的describe_to应该描述预期值--而不是缺少的值。或者,它应该报告像“21个现有文件的列表”这样的文件数量。
https://stackoverflow.com/questions/21834281
复制相似问题