![](/img/trans.png)
[英]Make Python unittest show AssertionError but no Traceback
[英]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.