PyBuilder:没有执行单元测试

PyBuilder: No unit tests executed

假设这是我的PyBuilder项目源码目录的布局 (省略myProject中的空__init__.py):

src
├── main
│   └── python
│       └── myProject
│           └── usefulThing.py
└── unittest
    └── python
        └── UsefulThingTest.py

UsefulThingTest.py的内容如下:

import unittest

from myProject.usefulThing import usefulFunction

class UsefulThingTest(unittest.TestCase):

  def test_should_do_useful_things(self):
    self.assertEqual(usefulFunction(42), 1764)

当我 运行 pyb 时,我收到以下警告,并且没有执行任何测试:

[WARN]  No unit tests executed.
[INFO]  All unit tests passed.

为什么 PyBuilder 运行 没有那些测试?

UsefulThingTest-class 扩展 unittest.TestCase 的事实不足以使 class 成为 运行 作为测试。保存UsefulThingTest的文件的名称也必须遵循一个约定:默认情况下,它必须以_tests.py结尾。例如重命名:

UsefulThingTest.py

useful_thing_tests.py

解决了问题。

引自Tutorial

The file must end with _tests.py. This tells PyBuilder to consider this file when discovering test cases.

这可以通过将 unittest_file_suffix 属性 设置为 described here 来改变。

unittests 要求文件(包含测试)命名为: *_tests.py

并且对函数名也做了限制:

import unittest
class SampleTests(unittest.TestCase):
      def test1(self):
          #function name should be like this : no underscore etc.

即他们有测试套件的预定义命名约定