我正在用Python开始测试驱动的开发,而且我在构建测试的方式上做错了。
我正在创建一个新类Corpus
,其中包含一些documents
,它们本身的类型为str
。我开始测试以查看新的Corpus
对象是否具有正确数量的文档:
path = "directory/of/test/data"
journal = Corpus(path)
entries = journal.documents
def document_presence():
assert len(entries) > 200
此测试失败,因为没有编写代码。我能想到的最简单的代码是,
class Corpus:
documents = range(201)
def __init__(self, path):
print("loaded")
到目前为止一切顺利。但是,当然,我的文档应该是字符串,而不是整数,所以我写了这个测试,期望它失败:
def document_structure():
entry = entries[0]
assert type(entry) == str
但是,它通过---它不应该!如果我没有将它包装在一个函数中,我检查它是否会按预期失败,如下所示:
entry = entries[0]
assert type(entry) == str
失败。
通过使用函数命名一个测试似乎是合理的,并且当我得到更多它们时,通过使用类将测试分组到集合中。将测试组织成值得信赖的断言的正确方法是什么?
答案 0 :(得分:3)
您的测试功能从未执行过。
pytest的默认值是您的测试函数必须命名为test_<something>
才能被pytest自动发现和执行。
以下是有关如何更改默认行为的详细信息:https://docs.pytest.org/en/latest/example/pythoncollection.html