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)
任何帮助表示赞赏
如果你搬家
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
到脚本结束,然后就可以了。
这是我的猜测:当您unittest.main()在脚本中间调用时,您的测试类尚未定义,因此unittest没有进行任何测试。通过将 移到unittest.main()最后,或者更准确地说,在定义测试类之后,您可以确保unittest 看到这些测试。