I’m trying to learn how to use the unittest
framework in python. I keep getting the message below when I run my file containing the tests.
---------------------------------------------------------------------- Ran 0 tests in 0.000s OK
I’ve searched here and elsewhere and can’t figure out why it is not recognizing the tests. Each test starts with test
and the other portions of the unittest
seem to match what the documentation requires.
Here is the text of the script:
import unittest from datetime import datetime, timedelta class Activity(object): 'Holds detail information on a activity' def __init__(self, location, activity_name, activity_id, start_date, end_date): self.activity_name = activity_name self.activity_id = activity_id self.start_date = datetime.strptime(start_date, '%m/%d/%Y').date() self.end_date = datetime.strptime(end_date, '%m/%d/%Y').date() self.location = location if __name__ == '__main__': unittest.main() class TestActivity(unittest.TestCase): def setUp(self): self.activity = Activity('UVU', 'OpenWest', 'Beginning Python' , '00000', '12/1/2013', '12/30/3013') def test_activity_creation(self): self.assertEqual(self.activity.location, 'UVU') self.assertEqual(self.activity.activity_name, 'OpenWest') self.assertEqual(self.activity.activity_id, '00000') self.assertEqual(self.activity.start_date, datetime.strptime('12/1/2013', '%m/%d/%Y').date()) self.assertEqual(self.activity.start_date, datetime.strptime('12/30/2013', '%m/%d/%Y').date()) def test1(self): self.assertEqual(1,1) def tearDown(self): del self.activity
Any help is appreciated
Advertisement
Answer
If you move
if __name__ == '__main__': unittest.main()
To the end of the script, then it will work.
Update
Here is my speculation: when you called unittest.main()
in the middle of the script, your test class has not been defined yet, thus unittest
did not pick up any tests. By moving the unittest.main()
to the end, or more precisely–after your define your test class, you make sure that unittest
sees those tests.