Python pytest下的unittest子测试元素输出不足

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'

我对使用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,它将清楚地显示三个失败,正如预期的那样:

======================================================================
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]