54
votes

I'm getting stuck with some unittests.

Here's the simplest example I could come up with:

#testito.py
import unittest

class Prueba(unittest.TestCase):

    def setUp(self):
        pass
    def printsTrue(self):
        self.assertTrue(True)

if __name__=="__main__":
    unittest.main()

Problem is, running this has no effect:

$ python testito.py 

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

I'm scratching my head as I don't see any problem with the code above. It happened with a couple of tests now and I don't really know what to do next. Any idea?

1

1 Answers

104
votes

By default, only functions whose name that start with test are run:

class Prueba(unittest.TestCase):

    def setUp(self):
        pass
    def testPrintsTrue(self):
        self.assertTrue(True)

From the unittest basic example:

A testcase is created by subclassing unittest.TestCase. The three individual tests are defined with methods whose names start with the letters test. This naming convention informs the test runner about which methods represent tests.