本文共 1702 字,大约阅读时间需要 5 分钟。
Pytest中的doctests是一种独特而强大的测试方法,它通过直接从文档注释中提取和执行测试用例,确保代码示例的正确性。在Pytest生态中,这种测试方法不仅能够作为代码的说明文档,还能验证文档中的示例代码是否能真正运行并产生预期的输出。
在函数、类或模块的文档注释中编写doctests非常简单。以一个简单的加法函数为例:
def add(a, b): """Function to add two numbers. Example: >>> add(2, 3) 5 >>> add(-1, 1) 0 return a + b
在这个例子中,我们在函数的文档注释中包含了doctests。每个测试用例都以>>>开头,后面是函数调用的代码,接着是预期的输出结果。当运行Pytest时,它会自动检测并执行这些doctests。
考虑一个更复杂的情景,我们有一个字符串处理的函数capitalize_and_reverse:
def capitalize_and_reverse(text): """Function to capitalize a string and reverse it. Example: >>> capitalize_and_reverse('pytest') 'TSEYTP' >>> capitalize_and_reverse('hello') 'OLLEH' capitalized_text = text.capitalize() reversed_text = ''.join(reversed(capitalized_text)) return reversed_text 这个函数首先将字符串首字母大写,然后将其反转。通过doctests,我们可以验证这个函数的正确性。
要运行包含doctests的测试,只需在Pytest命令中添加-k doctest:
pytest -k doctest
Pytest将查找包含doctests的模块,并执行其中的测试用例。如果所有测试都通过,输出将显示为1 passed。
doctests可以与其他Pytest的测试方法结合使用,构建更全面的测试套件。例如,我们可以在同一个模块中同时使用doctests和常规的测试函数:
# test_code.pydef test_add_function(): assert add(2, 3) == 5 assert add(-1, 1) == 0# Run both doctests and regular testspytest -k "doctest or test_add_function"
这样,我们既能够利用doctests验证示例代码,又能够使用常规的测试函数覆盖更复杂的测试场景。
Pytest中的doctests提供了一种简单而直观的测试方法,使得文档不仅仅是说明文档,还可以成为实际的测试用例。通过嵌入在文档中的示例代码,我们可以轻松验证代码的正确性,确保文档中的示例是可运行的。然而,在实际项目中,需要谨慎使用doctests,根据测试的复杂度和维护成本进行权衡。尝试在你的项目中使用doctests,发现它的便利之处,让测试更加直观与高效。
转载地址:http://pjafk.baihongyu.com/