Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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_Unit Testing_Celery_Celery Task - Fatal编程技术网

Python 如何测试芹菜中的_失败

Python 如何测试芹菜中的_失败,python,unit-testing,celery,celery-task,Python,Unit Testing,Celery,Celery Task,我的芹菜任务有一个基类,实现了一个on\u failure方法 在我的测试中,我修补了任务调用的其中一个方法,以引发异常,但从未调用\u faliure上的 基类 class BaseTask(celery.Task): abstract = True def on_failure(self, exc, task_id, args, kwargs, einfo): print("error") 任务 试验 当运行芹菜并引发异常时,一切正常。 cellery\

我的芹菜任务有一个基类,实现了一个
on\u failure
方法

在我的测试中,我修补了任务调用的其中一个方法,以引发异常,但从未调用\u faliure上的

基类

class BaseTask(celery.Task):
    abstract = True 

    def on_failure(self, exc, task_id, args, kwargs, einfo):
        print("error")
任务

试验

当运行芹菜并引发异常时,一切正常。
cellery\u ALWAYS\u EAGER
已激活

我如何使on faliure上的
运行?

来自一个:
on faliure
测试“已经在芹菜级别上完成(验证是否调用on faliure)”和“编写一个测试来测试on faliure所做的一切”。您可以在
on_failure
方法中定义一个函数并对其进行测试,或者像类方法一样调用
on_failure

import TestCase
from billiard.einfo import ExceptionInfo

class TestTask(TestCase):
    def test_on_failure(self):
        "Testing on failure method"

        exc = Exception("Test")
        task_id = "test_task_id"
        args = ["argument 1"]
        kwargs = {"key": "value"}
        einfo = ExceptionInfo

        # call on_failure method
        multiple.on_failure(exc, task_id, args, kwargs, einfo)

        # assert something appened
例外信息
芹菜
使用的对象类型相同<代码>多个
是您在问题中定义的任务


希望这有帮助

我的解决方案不是按原样运行多个
,而是通过同步芹菜
@patch('tasks.logic.method')
def test_something(self, mock):
    # arrange
    mock.side_effect = NotImplementedError

    # act
    with self.assertRaises(NotImplementedError):
        multiple(1, 2)
import TestCase
from billiard.einfo import ExceptionInfo

class TestTask(TestCase):
    def test_on_failure(self):
        "Testing on failure method"

        exc = Exception("Test")
        task_id = "test_task_id"
        args = ["argument 1"]
        kwargs = {"key": "value"}
        einfo = ExceptionInfo

        # call on_failure method
        multiple.on_failure(exc, task_id, args, kwargs, einfo)

        # assert something appened