Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python unittest not recognizing tests

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

like image 253
Stephen Done Avatar asked Oct 21 '22 07:10

Stephen Done


1 Answers

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.

like image 109
Hai Vu Avatar answered Oct 23 '22 02:10

Hai Vu