【问题标题】:How to write a unittest with setUpClass & tearDownClass in Python 2.3如何在 Python 2.3 中使用 setUpClass 和 tearDownClass 编写单元测试
【发布时间】:2011-11-02 23:50:59
【问题描述】:

我正在尝试在 python 2.3 中编写单元测试。我已经完成了所有工作,接受类级别的 setUp 和 tearDown 功能。我尝试在网上查找,但无法找到在 python 2.3 unittest 案例中定义这些的方法。

因此,是否可以在 python 2.3 测试用例中使用 setUpClass() 和 tearDownClass() ?如果是,我该怎么做?

【问题讨论】:

  • 历史记录:Python 2.3 于 2003 年 7 月 29 日发布。
  • 到目前为止您尝试过什么?我不知道它在 2.3 中是否有所不同,但您只需在 unittest.TestCase-inherited 类中定义 setUp 函数。
  • @miku 我意识到,由于与遗留系统的兼容性,我必须使用 python 2.3。如果由我决定,我会在 2.7
  • @Manny D - 'setUp()' 函数在 each 测试之前运行。我想为整个测试套件添加设置和清理,即在 all 测试用例之前设置和在 all 测试用例之后进行清理
  • 这可能是一个难以下咽的药丸,但每个测试用例都应该独立,而不是依赖于在一些多测试设置/拆卸后运行。通用设置是将测试分组到一个套件中的一个很好的理由,但设置确实应该发生在每个测试用例之前;否则会更难隔离单个测试用例中的故障。

标签: python unit-testing python-2.3


【解决方案1】:

尝试使用nose或其他兼容python 2.3的运行器; python 2.3 runner 不知道这个方法(setUpClass/tearDownClass)。

在 python 2.3 中,你应该手动(没有语法糖)来装饰一个函数,比如:

class MyTest(unittest.TestCase):
    def setUpClass(cls): ...
    setUpClass = classmethod(setUpClass)

【讨论】:

    【解决方案2】:

    根据Python 2.3 standard library documentation,unittest.TestCase 子类化的工作方式应该与它在该语言的更新版本中的工作方式相同。

    import unittest
    
    class MyTest(unittest.TestCase):
    
        def setUp(self):
            'Do stuff to set up before each test'
    
        def tearDown(self):
            'Do stuff to tear down after each test'
    

    如果您想要完成更具体的事情,您能描述一下吗?

    【讨论】:

    • 我正在寻求实现 setUpClass() 和 tearDownClass() 可以使用@classmethod 2.7 定义,如此处所述docs.python.org/library/unittest.html#unittest.TestCase
    • @classmethod 在 2.3 中不可用,并且无法在 2.3 的文档中找到如何操作 setUpClass()tearDownClass()
    • 我只是在阅读 2.3 的单元测试的源代码,看起来如果您希望能够利用 setUpClass 和 tearDownClass 功能,您必须编写自己的测试加载器或实现这些钩子的跑步者。话虽如此,自 2.3 以来,unittest 库已经有了长足的发展,但它所带来的麻烦可能没有最好的投资回报率。
    • 感谢您确认我的印象。目前,我正在使用测试的字母顺序进行两个特殊测试,例如test_00()test_99(),所有实际测试为 test_XX_description()。这是我可以模拟我想要的。升级后,我可以将这些切换到 @classmethod 版本
    猜你喜欢
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多