Python 单元测试和测试发现

发布于 2024-12-09 12:51:14 字数 1086 浏览 0 评论 0原文

我到底需要做什么才能让 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 是一个空文件。 有什么想法吗?

What exactly I need to do to make python's unittest work? I checked the official documentation, SO questions and even tried using nose, but nothing worked so far. What I'm doing wrong?

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()

As you can see, the tests simply aren't run and I have no idea why(since I'm not a python programmer).
Just for information, I'm using python 2.7 and the __init__.py is an empty file.
Any thoughts?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

无声情话 2024-12-16 12:51:14

您需要重命名以“test”一词开头的方法。

http://docs.python.org/library/unittest.html 所示:

测试用例是通过子类化unittest.TestCase来创建的。这三个单独的测试是使用名称以字母 test 开头的方法来定义的。此命名约定告知测试运行者哪些方法代表测试。

You need to rename the methods to begin with the word "test".

As seen on http://docs.python.org/library/unittest.html :

A testcase is created by subclassing unittest.TestCase. The three individual tests are defined with methods whose names start with the letters test. This naming convention informs the test runner about which methods represent tests.

梦萦几度 2024-12-16 12:51:14

我想提一下,你不能运行 python 单元测试,就像它是一个可执行的 python 文件一样。例如,这是我的问题:

python -m unittest ./TestMyPythonModule.py

... (stack trace) ...
ValueError: Empty module name

它失败了。

然而,这是有效的:

python -m unittest TestMyPythonModule

一开始很容易被忽视。

I would like to mention that you CANNOT run a python unit test as though it were an executable python file. For example, this was my problem:

python -m unittest ./TestMyPythonModule.py

... (stack trace) ...
ValueError: Empty module name

It fails.

However, this works:

python -m unittest TestMyPythonModule

It's easy to overlook at first.

自由如风 2024-12-16 12:51:14

unittest.main() 将运行所有以“test”开头的函数。所以你应该重命名你的函数

class EchoTest(unittest.TestCase):  
    def testfoo(self):
        self.assertTrue(1==1)

    def testbar(self):
        self.assertTrue(1==2)

unittest.main() will run all the function that begin by "test". So you should rename your functions

class EchoTest(unittest.TestCase):  
    def testfoo(self):
        self.assertTrue(1==1)

    def testbar(self):
        self.assertTrue(1==2)
月朦胧 2024-12-16 12:51:14

测试函数必须以名称 test 开头,因此 fooTest 应该是 testFoo。请参阅文档此处

此外,不需要 __init__。 py 文件,假设这是 tests 目录中仅有的两个文件。

Test functions must start with the name test So fooTest should be testFoo. See the docs here

Also, there isn't a need for the __init__.py file, assuming those are the only two files in your tests directory.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文