Python 单元测试不 运行 测试
Python unittest does not run tests
我做了一个叫demo的小项目,里面有一个测试
import unittest
class Test(unittest.TestCase):
def testName1(self):
self.assertEqual(5+9, 14)
if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()
但是,从命令行
ThinkPad-T520:~/workspacep/demo$ python -m unittest
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
为什么这不起作用?一般来说,我如何 运行 从单行命令行进行所有单元测试?
目录结构为
demo
tests
demo_test1.py __init__.py
你需要传入一个list of modules。
比如你的测试文件是foo.py
,那么你可以运行 python -m unittest foo
.
我刚才遇到了同样的问题,我用测试发现命令解决了它。
python -m unittest discover -s .
您也可以传入测试文件模式和整个其他选项https://docs.python.org/2/library/unittest.html#test-discovery
对我来说(运行来自 IntelliJ IDEA 的测试)我不得不删除 class' 'Run configuration'。早些时候我错误地将单元测试导入为 _pytest.unittest 和 运行 测试 class。当然没用。
我更正了模块导入,但 'run configuration' 仍然存在,导致它 运行 作为 Python 脚本而不是 'Python tests'。
我知道三个陷阱:
- 您的 TestCases 中的测试需要命名为
test_*
- 您的测试文件需要命名:
test*.py
(默认情况下,您可以在 运行 测试时使用 -p
标志更改它)。例如test_demo1.py
- 您的
tests
文件夹中需要有一个 __init__.py
文件,否则它不会被视为有效的导入位置。
因此,对于 #1,您需要将测试重命名为 test_name_1
。对于 #2,有两个选项:
A - 像这样重组您的文件:
demo
tests
__init__.py
test_demo1.py
然后 运行 python -m unittest
它应该找到测试用例。
B - 就像 运行 一样:python -m unittest discover -p *test.py
我有一个类似的问题,我发现我必须 运行 python3 -m unittest
而不是因为我忘记了 python
在我的系统上默认为 Python 2
我做了一个叫demo的小项目,里面有一个测试
import unittest
class Test(unittest.TestCase):
def testName1(self):
self.assertEqual(5+9, 14)
if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()
但是,从命令行
ThinkPad-T520:~/workspacep/demo$ python -m unittest
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
为什么这不起作用?一般来说,我如何 运行 从单行命令行进行所有单元测试?
目录结构为
demo
tests
demo_test1.py __init__.py
你需要传入一个list of modules。
比如你的测试文件是foo.py
,那么你可以运行 python -m unittest foo
.
我刚才遇到了同样的问题,我用测试发现命令解决了它。
python -m unittest discover -s .
您也可以传入测试文件模式和整个其他选项https://docs.python.org/2/library/unittest.html#test-discovery
对我来说(运行来自 IntelliJ IDEA 的测试)我不得不删除 class' 'Run configuration'。早些时候我错误地将单元测试导入为 _pytest.unittest 和 运行 测试 class。当然没用。
我更正了模块导入,但 'run configuration' 仍然存在,导致它 运行 作为 Python 脚本而不是 'Python tests'。
我知道三个陷阱:
- 您的 TestCases 中的测试需要命名为
test_*
- 您的测试文件需要命名:
test*.py
(默认情况下,您可以在 运行 测试时使用-p
标志更改它)。例如test_demo1.py
- 您的
tests
文件夹中需要有一个__init__.py
文件,否则它不会被视为有效的导入位置。
因此,对于 #1,您需要将测试重命名为 test_name_1
。对于 #2,有两个选项:
A - 像这样重组您的文件:
demo
tests
__init__.py
test_demo1.py
然后 运行 python -m unittest
它应该找到测试用例。
B - 就像 运行 一样:python -m unittest discover -p *test.py
我有一个类似的问题,我发现我必须 运行 python3 -m unittest
而不是因为我忘记了 python
在我的系统上默认为 Python 2