Python unittest 无法识别测试

Ste*_*one 5 python python-unittest

我正在尝试学习如何unittest在 python 中使用该框架。当我运行包含测试的文件时,我不断收到以下消息。

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

OK
Run Code Online (Sandbox Code Playgroud)

我在这里和其他地方搜索过,但不明白为什么它不识别测试。每个测试都以 开始,test并且其他部分unittest似乎与文档的要求相匹配。

这是脚本的文本:

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
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏

Hai*_* Vu 3

如果你搬家

if __name__ == '__main__':
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

到脚本结束,然后就可以了。

更新

这是我的猜测:当您unittest.main()在脚本中间调用时,您的测试类尚未定义,因此unittest没有进行任何测试。通过将 移到unittest.main()最后,或者更准确地说,在定义测试类之后,您可以确保unittest 看到这些测试。