为什么没有运行unittest?

时间:2013-02-02 16:52:33

标签: python unit-testing

我创建了一些单元测试但它们没有运行。为什么会这样。

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


class TestInversion(unittest.TestCase):

    def setUp(self):
        pass

    def test_1(self):
        self.assertEqual(1, 2)

    def test_2(self):
        self.assertEqual(2, 2)

    def test_3(self):
        self.assertEqual(3, 3)

    def test_4(self):
        self.assertEqual(4, 4)

2 个答案:

答案 0 :(得分:1)

你可能想要移动:

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

到了课堂下面。

正如Martijn Pieters指出的那样,import unittest需要保持在最高位置。

这是因为python解释器首先执行unittest.main()然后解析该类。 (因为这是你编写代码的顺序。)

答案 1 :(得分:1)

if __name__测试移至底部(将import unittest部分保留在顶部):

import unittest

class TestInversion(unittest.TestCase):

    def setUp(self):
        pass

    def test_1(self):
        self.assertEqual(1, 2)

    def test_2(self):
        self.assertEqual(2, 2)

    def test_3(self):
        self.assertEqual(3, 3)

    def test_4(self):
        self.assertEqual(4, 4)

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

然后它会起作用:

$ python test.py 
F...
======================================================================
FAIL: test_1 (__main__.TestInversion)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test.py", line 9, in test_1
    self.assertEqual(1, 2)
AssertionError: 1 != 2

----------------------------------------------------------------------
Ran 4 tests in 0.000s

FAILED (failures=1)

执行main()时,您需要定义测试用例;如果您在顶部调用main(),则不会定义 的测试。