我找了一遍,但找不到我要找的东西。
我的代码如下:
import datetime
import doctest
import os
def parseOptions():
import optparse
parser = optparse.OptionParser(usage= '-h')
parser.add_option('-d', '--difference', \
type= 'int')
(options, args) = parser.parse_args()
return options
now = datetime.datetime.now()
subtract = datetime.timedelta(days=10, hours=11)
difference = now - subtract
def checktime(now - b):
"""Returns a - b
>>> checktime(now - 10)
'now - 10'
>>> checktime(now - 20)
'now - 20'
>>> checktime(now - 30)
'now - 30'
"""
return now - b
if__name__== "__main__":
doctest.testmod()
print
print 'The time now is =', now.strftime("%I:%M:%S%p %a, %B %d %Y")
print 'The time minus the difference =', difference.strftime("%I:%M:%S%p %a, %B %d %Y")
print在继续之前,我希望doctest测试现在的时间减去数字(10,20,30小时)是否提供了正确的输出。
当我在命令提示符中运行该脚本时,我得到以下消息:
2 items had no tests:
time
time.struct_time
0 tests in 2 items.
0 passed and 0 failed.
Test passed.我曾试图改变一些零星的东西,以找出什么是用时间和time.struct_time定义的,但都以惨败告终。
任何帮助都将不胜感激!
发布于 2013-05-28 17:18:30
如果您想要测试函数是否执行了预期的操作,Doctest是很有用的。在您的例子中,我假设您想要从datetime参数中减去b小时数并返回差值。
将您的函数重写为subtime
def subtime(a,b):
subtract = datetime.timedelta(hours=b)
difference = a - subtract
return difference要运行doctest,您需要提供一些样例调用值和预期结果。想一想你的函数的用例(可能会发生一些奇怪的事情)。现在让我们形成一些测试用例
现在写下函数在每种情况下的调用方式。为简单起见,请使用与第一个参数相同的datetime。(不要使用now等脚本变量,因为您无法在脚本运行时预测它们的值)
subtime(datetime.datetime(2013,11,11,11,0),10)subtime(datetime.datetime(2013,11,11,11,0),24)subtime(datetime.datetime(2013,11,11,11,0),30)subtime(datetime.datetime(2013,11,11,11,0),0)subtime(datetime.datetime(2013,11,11,11,0),-5)现在计算(用笔和纸)每种情况的理想结果是什么
datetime.datetime(2013, 11, 11, 1, 0)datetime.datetime(2013, 11, 10, 11, 0)datetime.datetime(2013, 11, 10, 5, 0)datetime.datetime(2013, 11, 11, 11, 0)datetime.datetime(2013, 11, 11, 16, 0)将此代码添加到文档字符串""" """中的函数中
def subtime(a,b):
""" (datetime,int) -> datetime
Subtract b hours from a datetime.datetime and return the new datetime object
>>> subtime(datetime.datetime(2013,11,11,11,0),10)
datetime.datetime(2013, 11, 11, 1, 0)
>>> subtime(datetime.datetime(2013,11,11,11,0),24)
datetime.datetime(2013, 11, 10, 11, 0)
>>> subtime(datetime.datetime(2013,11,11,11,0),30)
datetime.datetime(2013, 11, 10, 5, 0)
>>> subtime(datetime.datetime(2013,11,11,11,0),0)
datetime.datetime(2013, 11, 11, 11, 0)
>>> subtime(datetime.datetime(2013,11,11,11,0),-5)
datetime.datetime(2013, 11, 11, 16, 0)
"""
subtract = datetime.timedelta(hours=b)
difference = now - subtract
return difference您的脚本现在是
import datetime
import doctest
import os
def parseOptions():
import optparse
parser = optparse.OptionParser(usage= '-h')
parser.add_option('-d', '--difference', \
type= 'int')
(options, args) = parser.parse_args()
return options
now = datetime.datetime.now()
def subtime(a,b):
""" (datetime,int) -> datetime
Subtract b hours from a datetime.datetime and return the new datetime object
>>> subtime(datetime.datetime(2013,11,11,11,0),10)
datetime.datetime(2013, 11, 11, 1, 0)
>>> subtime(datetime.datetime(2013,11,11,11,0),24)
datetime.datetime(2013, 11, 10, 11, 0)
>>> subtime(datetime.datetime(2013,11,11,11,0),30)
datetime.datetime(2013, 11, 10, 5, 0)
>>> subtime(datetime.datetime(2013,11,11,11,0),0)
datetime.datetime(2013, 11, 11, 11, 0)
>>> subtime(datetime.datetime(2013,11,11,11,0),-5)
datetime.datetime(2013, 11, 11, 16, 0)
"""
subtract = datetime.timedelta(hours=b)
difference = a - subtract
return difference
if __name__== "__main__":
doctest.testmod()
print
print 'This is the time now -', now.strftime("%I:%M:%S %p %a, %B %d %Y")
difference=subtime(now,10)
print 'This is the time minus the difference -', difference.strftime("%I:%M:%S %p %a, %B %d %Y")
print和输出
$ python try.py
This is the time now - 02:40:57 PM Tue, May 28 2013
This is the time minus the difference - 04:40:57 AM Tue, May 28 2013请注意,使用doctest时,如果所有测试都通过,则不会得到任何与测试相关的输出。(一切正常)
https://stackoverflow.com/questions/16787561
复制相似问题