【发布时间】:2019-04-20 23:06:26
【问题描述】:
我读过Testing with Celery,但我还是有点困惑。我想通过手动和显式运行任务来测试生成 Celery 任务的代码,例如:
def test_something(self):
do_something_that_generates_a_celery_task()
assert_state_before_task_runs()
run_task()
assert_state_after_task_runs()
我不想完全模拟任务的创建,但同时我也不关心测试 Celery 工人正在接受的任务。我假设 Celery 有效。
我尝试执行此操作的实际上下文是一个 Django 应用程序,其中有一些代码在请求中运行时间过长,因此,它被委派给后台作业。
【问题讨论】:
-
你可以模拟:
do_something_that_generates_a_celery_task()并添加一个side_effect(),它调用 celery 任务将调用的函数。如果 celery 任务是一个函数,那么你可以很容易地在 celery 之外运行 -
@UkuLoskit:我不想嘲笑它。我不确定我可以嘲笑它。这是一个与测试网络服务器交互的 selenium 脚本。
-
这是相关的,但我还没有设法让它工作:stackoverflow.com/questions/22233680/…