如何解决上下文管理器单元测试问题 - Python
问题可能是微不足道的,但我对 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 举报,一经查实,本站将立刻删除。