问题描述
问题可能是微不足道的,但我对 python 中的单元测试知之甚少,我遇到了问题: 任务是创建上下文管理器类,用于测量指令块的执行时间,然后使用其他一些函数对其进行扩展,例如从上次测量开始测量时间等。
from random import randint
import datetime
class Timed:
def __enter__(self):
self.start = datetime.datetime.Now()
return self
def __exit__(self,*args):
self.stop = datetime.datetime.Now()
print(self.stop-self.start)
return self.stop-self.start
def generate_and_sort(size):
random_list = [randint(0,1000) for _ in range(size)]
sorted(random_list)
if __name__ == '__main__':
with Timed() as timed:
generate_and_sort(1000000)
这是我的讲师给出的测试,返回 ValueError: invalid literal for int base 10 at assertion lines
import sys
import unittest
from contextlib import contextmanager
from io import StringIO
from zaddom0403_e1 import Timed
@contextmanager
def captured_output():
new_out,new_err = StringIO(),StringIO()
old_out,old_err = sys.stdout,sys.stderr
try:
sys.stdout,sys.stderr = new_out,new_err
yield sys.stdout,sys.stderr
finally:
sys.stdout,sys.stderr = old_out,old_err
class Zaddom0403_e1(unittest.TestCase):
def test_timed_usage(self):
with captured_output() as (out,err):
with Timed():
pass
output = out.getvalue().strip()
time_without_milliseconds = output[:7]
milliseconds = output[8:]
self.assertEqual(time_without_milliseconds,'0:00:00')
self.assertGreater(int(milliseconds),0)
self.assertLess(int(milliseconds),100)
if __name__ == '__main__':
unittest.main()
所以我的问题是 - 我的输出格式或单元测试有问题
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)