单元测试无法运行

70

我在一些单元测试中遇到了困难。

这是我能想到的最简单的例子:

#testito.py
import unittest

class Prueba(unittest.TestCase):

    def setUp(self):
        pass
    def printsTrue(self):
        self.assertTrue(True)

if __name__=="__main__":
    unittest.main()

问题在于,运行此代码没有任何效果:

$ python testito.py 

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

我正在思考,因为我看不到上面的代码有任何问题。这已经发生了几次测试,我真的不知道接下来该怎么办。有什么建议吗?

1个回答

123

默认情况下,只有以test开头的函数才会被执行:

class Prueba(unittest.TestCase):

    def setUp(self):
        pass
    def testPrintsTrue(self):
        self.assertTrue(True)

来自 unittest 基本示例

要创建一个测试用例,需要继承 unittest.TestCase。三个单独的测试是通过定义方法名称以字母 test 开头的方式完成的。此命名约定告诉测试运行程序哪些方法代表测试。


2
只是好奇为什么要用testPrints而不是test_prints? - Foo Bar User
3
@FooBarUser:我一直遵循原始问题的现有命名约定。 - Martijn Pieters
2
即使在函数开头添加测试,对我来说也不起作用。它与此相同,但没有运行任何测试... - Darkgaze
1
@ScottSkiles:你需要定义自己的TestLoader子类,覆盖getTestCaseNames()方法当前实现使这个过程变得更简单;你也可以在现有的加载器上设置testMethodPrefix属性 - Martijn Pieters
1
@ScottSkiles:unittest.loader 中的一些辅助函数正是为此而设计的。 - Martijn Pieters
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接