py.test has limited support for running Python unittest.py style tests. It will automatically collect unittest.TestCase subclasses and their test methods in test files. It will invoke setUp/tearDown methods but also perform py.test’s standard ways of treating tests such as IO capturing:
# content of test_unittest.py
import unittest
class MyTest(unittest.TestCase):
def setUp(self):
print ("hello") # output is captured
def test_method(self):
x = 1
self.assertEquals(x, 3)
Running it yields:
$ py.test test_unittest.py
=========================== test session starts ============================
platform darwin -- Python 2.7.1 -- pytest-2.1.3
collecting ... collected 1 items
test_unittest.py F
================================= FAILURES =================================
____________________________ MyTest.test_method ____________________________
self = <test_unittest.MyTest testMethod=test_method>
def test_method(self):
x = 1
> self.assertEquals(x, 3)
E AssertionError: 1 != 3
test_unittest.py:8: AssertionError
----------------------------- Captured stdout ------------------------------
hello
========================= 1 failed in 0.04 seconds =========================