Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python使用超时修饰符测试函数_Python_Python 3.x_Testing_Mocking_Pytest - Fatal编程技术网

Python使用超时修饰符测试函数

Python使用超时修饰符测试函数,python,python-3.x,testing,mocking,pytest,Python,Python 3.x,Testing,Mocking,Pytest,所以我有一个函数调用一些API。我使用了一个带有超时的decorator,使用的是timeout decoratorpackage。基本上是这样的: 导入超时\u decorator 导入请求 @超时\u decorator.timeout(秒=10,使用\u信号=False,超时\u异常=MyTimeoutException) def get_from_api(self,url:str,params:Dict): requests.get(url=url,params=params) 现在我

所以我有一个函数调用一些API。我使用了一个带有超时的decorator,使用的是
timeout decorator
package。基本上是这样的:

导入超时\u decorator
导入请求
@超时\u decorator.timeout(秒=10,使用\u信号=False,超时\u异常=MyTimeoutException)
def get_from_api(self,url:str,params:Dict):
requests.get(url=url,params=params)
现在我想创建一个测试来检查这个装饰器是否工作,因此如果
get\u from\u api
主体的执行时间比我的情况下的10秒长,那么将引发一个异常

问题当然是我不想等待整整10秒,我必须让主体执行的时间超过超时时间,以引发异常


我这里的问题是:是否有一个lib或一个简单的mock技术,例如使这个超时为
0.1s
,而主体执行时间为
0.2s
?另外,我不知道它是否有那么大的相关性,但是我正在使用
pytest

为什么不在测试中简单地将一个较小的超时值传递给decorator呢?所以你想在主体执行完成后引发一个timeoutexception,是这样吗?看起来你真的想测试装饰器的功能-在这种情况下,我只需要单独进行测试(你可以使用
sleep
调用作为要测试的函数体),并在测试其余功能时依赖它。@beanbreman先生,这就是我最后要做的。不知道我是否应该把它作为一个答案好吧,它实际上没有回答具体的问题,所以我想没有。。。尽管这取决于您。为什么不在测试中向装饰器传递一个较小的超时值呢?因此,您希望在主体执行完成后引发timeoutexception,是吗?看起来您实际上想要测试装饰器的功能-在本例中,我将单独进行此操作(你可以使用
sleep
调用作为要测试的函数体),并在测试其余功能时依赖它。@beanbreman先生,这就是我最后要做的。不知道我是否应该回答这个问题。好吧,它实际上没有回答具体的问题,所以我想没有。尽管这取决于你。