gpt4 book ai didi

python - 在单元测试中使用 doctests

转载 作者:太空狗 更新时间:2023-10-29 19:33:53 24 4
gpt4 key购买 nike

我通常在我的模块中同时编写单元测试和文档测试。我想在运行测试套件时自动运行我所有的 doctests。我认为这是可能的,但我在语法上遇到了困难。

我有测试套件

import unittest
class ts(unittest.TestCase):
def test_null(self): self.assertTrue(True)
if __name__ == '__main__': unittest.main()

我想将模块 module1 中的所有 doctest 添加到此套件中。我怎样才能做到这一点?我读过 python docs ,但我离成功还差得很远,在这里。添加行

import doctest
import module1
suite = doctest.DocTestSuite(module1)

没用。 unittest.main() 搜索当前文件范围并运行它找到的每个测试 case,对吧?但是 DocTestSuite 生成一个测试套件。如何让 unittest.main() 运行套件中的其他案例?还是我只是迷惑和迷惑了??

再一次,如果有人能提供任何帮助,我将不胜感激。

最佳答案

这个老问题的更新:自 Python 2.7 版以来,有 load_tests protocol不再需要编写自定义代码。它允许您添加函数 load_tests(),测试加载器将执行该函数以更新当前模块的单元测试集合。

在你的代码模块中放置一个像这样的函数,将模块自己的 doctests 打包到 unittest 的测试套件中:

def load_tests(loader, tests, ignore):
tests.addTests(doctest.DocTestSuite())
return tests

或者,将这样的函数放入您的单元测试模块,以将来自另一个模块(例如,package.code_module)的文档测试添加到已经存在的测试套件中:

def load_tests(loader, tests, ignore):
tests.addTests(doctest.DocTestSuite(package.code_module))
return tests

unittest.TestLoader 方法 loadTestsFromModule()loadTestsFromName()discover() 被使用时使用包括单元测试和文档测试的测试套件。

关于python - 在单元测试中使用 doctests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5681330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com