微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

上下文管理器单元测试问题 - Python

如何解决上下文管理器单元测试问题 - 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?