Python中的unittest

时间:2015-02-10 18:06:54

标签: python unit-testing

以下程序:

import unittest

class my_class(unittest.TestCase):


  def setUp(self):
        print "In Setup"
        self.x=100
        self.y=200

    def test_case1(self):
        print "-------------"
        print "test case1"
        print self.x
        print "-------------"
    def test_case2(self):
        print "-------------"
        print "test case2"
        print self.y
        print "-------------"
    def tearDown(self):
        print "In Tear Down"
        print "      "
        print "      "

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

给出输出:

>>> ================================ RESTART ================================
>>> 
In Setup
-------------
test case1
100
-------------
In Tear Down

.In Setup
-------------
test case2
200
-------------
In Tear Down
      .
----------------------------------------------------------------------
Ran 2 tests in 0.113s

OK
>>> 
>>> 

问题:

  1. 的含义是什么:if __name__ == "__main__": unittest.main()

  2. 为什么我们为namemain添加了前缀和后缀的双下划线?

  3. my_class的对象在哪里创建?

1 个答案:

答案 0 :(得分:2)

if __name__ == "__main__":位允许您的代码作为模块导入而不调用unittest.main()代码 - 只有在调用此代码作为程序的主入口点时才会运行(即如果您的程序位于python program.py),则称其为program.py

双下划线的前缀和后缀表示:

  

__double_leading_and_trailing_underscore__:生活在用户控制的命名空间中的“神奇”对象或属性。例如。 __init____import____file__。不要发明这样的名字;只能按照文件记录使用它们。

来自PEP 8 Style Guide - 这是一个非常有用的阅读和内化资源。

最后,您的my_class类将在运行时在unittest框架中实例化,因为它继承自unittest.TestCase