繁体   English   中英

Python 如何在单元测试中隐藏回溯

[英]Python How to hide traceback in unittest

伙计们,我有一个单元测试,我不想在找到异常时抛出异常,但要等到最后,output 在最后提出它。:

from unittest import TestCase
class TestA(TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_lst(self):
        a = [1, 2, 3, 4, 5]
        b = [1, 3, 3, 5, 5]
        total_errs_count = 0
        total_errs_msg = []
        for i in range(5):
            try:
                self.assertEqual(a[i], b[i])
            except AssertionError:
                total_errs_count += 1
                total_errs_msg.append(f'Index {i}, Expected {a[i]}, Get {b[i]}')
        if total_errs_count > 0:
            for m in total_errs_msg:
                print(m)
            raise AssertionError("Test Failed")

test = TestA()
test.test_lst()

我有:

IOndex 1, Expected 2, Get 3
Number 3, Expected 4, Get 5
----------------------------------------------------
AssertionError     Traceback (most recent call last)
<ipython-input-5-b70dc996c844> in <module>
     27 
     28 test = TestA()
---> 29 test.test_lst()

<ipython-input-5-b70dc996c844> in test_lst(self)
     24             for m in total_errs_msg:
     25                 print(m)
---> 26             raise AssertionError("Test Failed")
     27 
     28 test = TestA()

AssertionError: Test Failed

但是,所需的 output 是隐藏回溯:

Index 1, Expected 2, Get 3
Index 3, Expected 4, Get 5
----------------------------------------------------
AssertionError: Test Failed

在这种情况下如何隐藏回溯? 另一篇文章建议通过unittest_exception = sys.exc_info()捕获异常,但在这里我不想立即抛出异常而是等待所有测试用例完成。

有什么建议吗?

谢谢

试试这个方法

from unittest import TestCase
import unittest


class TestA(TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_lst(self):
        a = [1, 2, 3, 4, 5]
        b = [1, 3, 3, 5, 5]
        for i in range(len(a)):
            with self.subTest(i=i):
                self.assertEqual(a[i], b[i])


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM