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

重试装饰方法Python Nosetest的单元测试

如何解决重试装饰方法Python Nosetest的单元测试

我的代码中有重试功能

def retry(retry_times=4,wait_time=1):
"""
Function to use as a decorator to retry any method certain number of times
:param retry_times: number of times to retry a function
:param wait_time: delay between each retry
:return: returns expected return value from the function on success else raises exception
"""
def decorator(func):
    @wraps(func)
    def wrapper(*args,**kwargs):
        for _ in range(retry_times):
            try:
                if func(*args,**kwargs):
                    return
            except Exception as e:
                raise e
            time.sleep(secs=wait_time)
    return wrapper
return decorator

我正在像这样的某些功能上使用它:-

retry(retry_times=RETRY_TIMES,wait_time=RETRY_WAIT_TIME)
def get_something(self,some_id):
    ....
    return something or raise exception( just assume)

RETRY_TIMES和WAIT_TIME是一些常量。 现在,我的功能get_something()返回一个值或引发异常。

现在我的问题是我想编写一个测试用例来测试我的重试功能如何编写单元测试来测试重试功能

解决方法

最后得到答案: RetryTest(BaseTestCase)类:

def test_retry(self):
    random_value = {'some_key': 5}

    class TestRetry:
        def __init__(self):
            self.call_count = 0

        @retry(retry_times=3,wait_time=1)
        def some_function(self):

            try:
                self.call_count += 1
                if random_value.get('non_existing_key'):
                    return True
            except KeyError:
                return False

    retry_class_object = TestRetry()
    retry_class_object.some_function()
    self.assertEqual(retry_class_object.call_count,3)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 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”。这是什么意思?