【问题标题】:How to unittest unittest TestCases如何对单元测试测试用例进行单元测试
【发布时间】:2012-01-08 15:43:46
【问题描述】:

我有一个 unittest.TestCase 孩子,它定义了几个特定领域的断言检查。 我想运行一些单元测试来对这个功能进行单元测试,以控制未来更新时一切正常。

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

我想在其他单元测试中实例化 MyBaseTestCase,像这样:

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

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

如果有帮助:

$ 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.)]'

【问题讨论】:

    标签: python unit-testing jython jython-2.5


    【解决方案1】:

    不确定是否有任何特定于 Jython 的东西会破坏这一点,但我会这样做:

    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()
    

    【讨论】:

    • 感谢您的回答。听起来很合理。我暂时不会选择这个最好(接受),但我想如果没有其他建议我会做。
    猜你喜欢
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多