Python unittest不运行测试
我做了一个名为demo的小项目,其中只有一个测试Python unittest不运行测试,python,unit-testing,python-unittest,Python,Unit Testing,Python Unittest,我做了一个名为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
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
你需要通过考试
例如,如果您的测试文件是
foo.py
,那么您可以运行python-m unittest foo
我刚才也遇到过同样的问题,我使用test discovery命令解决了这个问题
python-m单元测试发现-s.
您还可以传入测试文件模式以及一整套其他选项,我(从中运行测试)必须删除类“运行配置”。早些时候,我错误地将unittest作为_pytest.unittest导入,并运行了测试类。那当然不行
我更正了模块导入,但“运行配置”仍然存在,导致它作为Python脚本而不是“Python测试”运行。我知道有三个问题:
test.*
test*.py
(默认情况下,您可以在运行测试时使用-p
标志对其进行更改)。e、 g.test\u demo1.py
测试
文件夹中需要有一个\uuuu init\uuuuu.py
文件,否则它将不被视为导入的有效位置test#u name_1
。对于#2,有两种选择:
A-按如下方式重新构造文件:
demo
tests
__init__.py
test_demo1.py
然后运行python-m unittest
,它会找到测试用例
B-只需像这样运行:
python-m unittest discover-p*test.py
您可以共享项目的目录结构吗?python test\u demo.py
首先,如果您正在执行python-m unittest
,那么在脚本中,\u name\u
不等于“main”.请查看原始问题的编辑以查看目录结构。另外,John Gordon,你是什么意思?您可以看到上面的代码,它是main。默认使用discover不是甚至没有在命令中显式传递它吗?顺便说一句,这对我来说也是失败的,得到了与上面相同的结果,跑0tests@BaronYugovich它可能失败了,因为匹配测试文件的默认模式是test*.py
,而测试文件名demo\u test1.py
只能由“*\u test*.py”
Trypython-m unittest discover-s匹配-p“*test*.py”
No,这就是我想要避免的。我想让它运行一个项目中的所有测试。假设这是一个包含100个模块的大型项目,我不想显式地传递它们。