完全我需要做些什么来使python的unittest
工作?我检查了官方文档,SO问题,甚至尝试使用nose
,但到目前为止没有任何工作。我做错了什么?
bash:~/path/to/project/src/tests$ ls -l
total 8
-rw-r--r-- 1 myuser myuser 342 Out 11 11:51 echo_test.py
-rw-r--r-- 1 myuser myuser 71 Out 11 11:28 __init__.py
bash:~/path/to/project/src/tests$ python -m unittest -v echo_test
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
bash:~/path/to/project/src/tests$ python -m unittest discover
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
bash:~/path/to/project/src/tests$ cat echo_test.py
import unittest
class EchoTest(unittest.TestCase):
def fooTest(self):
self.assertTrue(1==1)
def barTest(self):
self.assertTrue(1==2)
#suite = unittest.TestLoader().loadTestsFromTestCase(TestEcho)
#unittest.TextTestRunner(verbosity=2).run(suite)
if __name__ == '__main__':
unittest.main()
正如您所看到的,测试只是没有运行,我不知道为什么(因为我不是python程序员)。
仅供参考,我使用的是python 2.7,而__init__.py
是一个空文件。
有什么想法吗?
答案 0 :(得分:29)
您需要将方法重命名为以“test”开头。
见http://docs.python.org/library/unittest.html:
通过继承unittest.TestCase创建测试用例。使用名称以字母test开头的方法定义三个单独的测试。此命名约定通知测试运行器哪些方法代表测试。
答案 1 :(得分:15)
我想提一下你 CAN NOT 运行python单元测试,好像它是一个可执行的python文件。例如,这是我的问题:
python -m unittest ./TestMyPythonModule.py
... (stack trace) ...
ValueError: Empty module name
失败了。
然而,这有效:
python -m unittest TestMyPythonModule
一开始很容易忽视。
答案 2 :(得分:3)
unittest.main()将运行以“test”开头的所有函数。所以你应该重命名你的功能
class EchoTest(unittest.TestCase):
def testfoo(self):
self.assertTrue(1==1)
def testbar(self):
self.assertTrue(1==2)
答案 3 :(得分:1)
测试函数必须以名称test
开头,因此fooTest
应为testFoo
。请参阅文档here
此外,不需要__init__.py
文件,假设这些文件只是tests
目录中的两个文件。