【问题标题】:why is my unittest not running为什么我的单元测试没有运行
【发布时间】:2015-09-03 16:27:10
【问题描述】:

我正在编写一个单元来测试我的代码,但最后它说运行了 0 个测试。 这是我的单位代码:

import roman1
import roman2
import unittest

class KnownValues(unittest.TestCase):
    known_values =  ((1, 'I'),
                     (2, 'II'),
                     (3, 'III'),
                     (4, 'IV'),
                     (5, 'V'))
def test_to_roman_values(self):
    for integer, numeral in self.known_values:
        result = roman1.to_roman(integer)
        self.assertEqual(numeral, result)

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

但它说在 0 秒内运行了 0 个测试。我能够运行我写得很好的另一个单元,并且设置基本相同。我的代码有问题吗?我正在使用来自 mac OS X 的 python

【问题讨论】:

  • 那是你的实际缩进吗?测试 "method" 实际上不在类中...

标签: python unit-testing python-3.x


【解决方案1】:

正如 jonsharpe 所说,您的 test_to_roman_values 方法不在 KnownValues 类中,因为缩进是错误的。

您需要将整个方法再缩进一个制表符(4 个空格),例如:

import roman1
import roman2
import unittest

class KnownValues(unittest.TestCase):
    known_values =  ((1, 'I'),
                     (2, 'II'),
                     (3, 'III'),
                     (4, 'IV'),
                     (5, 'V'))

    def test_to_roman_values(self):
        for integer, numeral in self.known_values:
            result = roman1.to_roman(integer)
            self.assertEqual(numeral, result)

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

这将使它成为一个类方法,您的测试应该可以正常运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    相关资源
    最近更新 更多