如何对单元测试单元进行测试 [英] How to unittest unittest TestCases

查看:159
本文介绍了如何对单元测试单元进行测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个unittest.TestCase子级,它定义了几个特定于域的断言检查. 我想运行一些单元测试来对该功能进行单元测试,以控制一切都在以后的更新中起作用.

I have a unittest.TestCase child, which defines several domain specific assert Checks. I would like to run some unittests to unittest this functionality to control that everything work on future updates.

class MyBaseTestCase(unittest.TestCase):
    def setUp(self):
        ...
    def tearDown(self):
        ...
    def run(self, result):
        ...
    def assertSpec(self, condition, message):
        ...

我想在其他单元测试中实例化MyBaseTestCase,如下所示:

I want to instantiate MyBaseTestCase in other unit test, like this:

class TestBase(unittest.TestCase):
    def test_assertSpec(self):
        self.testclass = MyBaseTestCase()
        self.assertRaises(AssertionError, self.testclass.assertSpec, False)

在执行此操作时,我遇到了多个不同的错误,所以我的问题是单元测试自定义unittest函数的常见做法是什么?

I'm encountering multiple different errors, when doing this, so my question is what is a common practice for unittesting custom unittest functions?

以防万一:

$ jython
>>> import sys
>>> sys.version
'2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06) \n[Java HotSpot(TM) Server VM (Sun Microsystems Inc.)]'

推荐答案

不确定是否有Jython特有的方法可以解决这个问题,但是我会做这样的事情:

Not sure if there's anything Jython specific that would break this, but I would do something like this:

import StringIO
import unittest


# The TestCase subclass to test    
class MyBaseTestCase(unittest.TestCase):
    def assertSpec(self, thing):
        assert thing == 123


# The testcase for MyBaseTestCase
class TestMyTest(unittest.TestCase):
    def test_assetSpec(self):
        """Ensure assertSpec works
        """

        class _TestSpec(MyBaseTestCase):
            def test_failure_case(self):
                 self.assertSpec(121)
            def test_success_case(self):
                 self.assertSpec(123)

        # Load tests from _TestSpec
        loader = unittest.TestLoader()
        suite = loader.loadTestsFromTestCase(_TestSpec)

        # Create runner, and run _TestSpec
        io = StringIO.StringIO()
        runner = unittest.TextTestRunner(stream = io)
        results = runner.run(suite)

        # Should be one failed test, and one passed test
        self.assertEquals(results.testsRun, 2)
        self.assertEquals(len(results.failures), 1)

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

这篇关于如何对单元测试单元进行测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆