Previous topic

asserting deprecation and other warnings.

Next topic

Running test written for nose

This Page

unittest.TestCase supportΒΆ

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 like e.g. 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 linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30
test path 1: test_unittest.py

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)

test_unittest.py:8:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <test_unittest.MyTest testMethod=test_method>, first = 1, second = 3
msg = None

    def failUnlessEqual(self, first, second, msg=None):
        """Fail if the two objects are unequal as determined by the '=='
               operator.
            """
        if not first == second:
            raise self.failureException, \
>                 (msg or '%r != %r' % (first, second))
E                 AssertionError: 1 != 3

/usr/lib/python2.6/unittest.py:350: AssertionError
----------------------------- Captured stdout ------------------------------
hello
========================= 1 failed in 0.02 seconds =========================