Python pytest下的unittest子测试元素输出不足
我对使用unittest的子测试循环完成一些非常类似的测试感兴趣。我发现,当我在pytest或nosetests下运行以这种方式编写的测试时,输出不包含关于单个失败的信息。从以下方面来看: 导入单元测试 类编号TestUnitTest.TestCase: def测试自身: 测试0和5之间的数字是否都是偶数。 对于0,6范围内的i: 当self.subTesti=i时: self.assertEquali%2,0 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': unittest.main 如果我运行python test_even.py,它将清楚地显示三个失败,正如预期的那样:Python pytest下的unittest子测试元素输出不足,python,pytest,python-unittest,Python,Pytest,Python Unittest,我对使用unittest的子测试循环完成一些非常类似的测试感兴趣。我发现,当我在pytest或nosetests下运行以这种方式编写的测试时,输出不包含关于单个失败的信息。从以下方面来看: 导入单元测试 类编号TestUnitTest.TestCase: def测试自身: 测试0和5之间的数字是否都是偶数。 对于0,6范围内的i: 当self.subTesti=i时: self.assertEquali%2,0 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu'
======================================================================
FAIL: test_even (__main__.NumbersTest) (i=1)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_even.py", line 10, in test_even
self.assertEqual(i % 2, 0)
AssertionError: 1 != 0
======================================================================
FAIL: test_even (__main__.NumbersTest) (i=3)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_even.py", line 10, in test_even
self.assertEqual(i % 2, 0)
AssertionError: 1 != 0
======================================================================
FAIL: test_even (__main__.NumbersTest) (i=5)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_even.py", line 10, in test_even
self.assertEqual(i % 2, 0)
AssertionError: 1 != 0
----------------------------------------------------------------------
Ran 1 test in 0.002s
FAILED (failures=3)
然而,如果我运行pytest-v test_even.py,它只会告诉我这个测试失败了。我看不出哪些元素失败:
test_even.py::NumbersTest::test_even FAILED [100%]
======================================================= FAILURES =======================================================
________________________________________________ NumbersTest.test_even _________________________________________________
self = <test_even.NumbersTest testMethod=test_even>
def test_even(self):
"""
Test that numbers between 0 and 5 are all even.
"""
for i in range(0, 6):
with self.subTest(i=i):
> self.assertEqual(i % 2, 0)
E AssertionError: 1 != 0
test_even.py:10: AssertionError
=============================================== 1 failed in 0.15 seconds ===============================================
有没有一种方法可以显示个人的失败?理想情况下,我还希望对通过的测试有某种输出,只是为了让自己确信测试发现工作正常 这似乎是个测试。一种解决方案可能是完全抛弃单元测试,编写本机pytest测试:
导入pytest
@pytest.mark.parametrizetest_输入,范围0,6
def测试事件测试输入:
断言测试输入%2==0
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
pytest.main[\uuuuuu文件\uuuuu]