[英]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
我知道三个问题:
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
我刚才遇到了同样的问题,我通过使用测试发现命令解决了它。
python -m unittest discover -s.
您也可以传入测试文件模式和其他所有选项https://docs.python.org/2/library/unittest.html#test-discovery
您需要传入一个模块列表。
例如,如果您的测试文件是foo.py
,那么您可以运行python -m unittest foo
。
对我来说(从IntelliJ IDEA运行测试)我不得不删除类' '运行配置' 。 早些时候我错误地将 unittest 导入为 _pytest.unittest 并运行了测试类。 当然那没有用。
我更正了模块导入,但“运行配置”仍然存在,导致它作为 Python 脚本运行,而不是作为“Python 测试”运行。
我有一个类似的问题,我发现我必须运行python3 -m unittest
而不是因为我忘记了我系统上的python
默认为 Python 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.