gpt4 book ai didi

python - 从 Python 的子目录运行所有测试

转载 作者:太空狗 更新时间:2023-10-30 02:16:19 26 4
gpt4 key购买 nike

我无计可施,试图让我所有的单元测试都在 Python 中运行。我已经搜索了大约 30 个不同的帖子和单元测试文档,但仍然无法弄清楚。

首先我有两个测试类,我可以单独运行它们并且所有测试都通过了:

文件:unittest.subfolder1.TestObject1.py

class TestObject1(unittest.TestCase):
def test_case1(self):
...some code...
...some assertions...

if __name__ == '__main__':
unittest.main()

文件:unittest.subfolder2.TestObject2.py

class TestObject2(unittest.TestCase):
def test_case1(self):
...some code...
...some assertions...

if __name__ == '__main__':
unittest.main()

从“unittest”上方的顶级目录开始,我试图通过 unittest.discover 查找并运行我的所有测试:

import unittest

loader = unittest.TestLoader()
suite = loader.discover('unittest')
unittest.TextTestRunner().run(suite)

当我这样做时,我收到错误“ModuleNotFoundError: No module named 'subfolder1.TestObject1'”

我做错了什么?

最佳答案

一个好的方法是从命令行运行子目录中的所有测试。为了在子目录中找到以下文件“TestObject1.py, TestObject2.py, ...”,您可以在命令行中运行以下命令:

python -m unittest discover -p 'Test*.py'

此外,importmodule 目录中需要 __init__.py:Python unittest discovery with subfolders

文件 unittest.subfolder1.TestObject1.py 和 unittest.subfolder2.TestObject2.py 中需要 import unittest

也可以使用-s 参数显式定义发现开始的目录:

python -m unittest discover [options]

-s directory Directory to start discovery ('.' default)
-p pattern Pattern to match test files ('test*.py' default)

如果您使用的是 unittest2,它会附带一个脚本 unit2。命令行用法是:

unit2 discover unit2 -v test_module

关于python - 从 Python 的子目录运行所有测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44708204/

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