小编Emi*_*mil的帖子

使用mock在Django单元测试中修补芹菜任务

我正在尝试使用python模拟库来修补在我的django应用程序中保存模型时运行的Celery任务,以查看它是否被正确调用.

基本上,任务在内部定义myapp.tasks,并在我的models.py文件的顶部导入,如下所示:

from .tasks import mytask

...然后save()使用在模型内部运行mytask.delay(foo, bar).到目前为止一切都很好 - 当我实际运行Celeryd等时工作得很好.

我想构建一个模拟任务的单元测试,只是为了检查它是否使用正确的参数调用,并且实际上并没有尝试运行Celery任务.

所以在测试文件中,我在标准的TestCase中有这样的东西:

from mock import patch # at the top of the file

# ...then later
def test_celery_task(self):
    with patch('myapp.models.mytask.delay') as mock_task:
        # ...create an instance of the model and save it etc
        self.assertTrue(mock_task.called)
Run Code Online (Sandbox Code Playgroud)

...但它永远不会被调用/总是错误的.我已经尝试了各种化身(myapp.models.mytask改为修补,并检查是否mock_task.delay被调用.我从模拟文档中收集了导入路径至关重要,谷歌搜索告诉我它应该是在模块中看到的路径测试(如果我理解正确的话,那将是myapp.models.mytask.delay而不是myapp.tasks.mytask.delay).

我在哪里错了?在修补Celery任务时是否存在一些特定的困难?我可以修补celery.task(用作装饰器mytask)吗?

python django unit-testing mocking celery

31
推荐指数
2
解决办法
1万
查看次数

susy - 如何使它全宽(没有排水沟)?

当我使用SUSY构建网格时遇到问题.我设置了以下包装类:

$susy: (
    math: fluid,
    columns: 12,
    gutters: 0.25,
    gutter-position: split,
);
Run Code Online (Sandbox Code Playgroud)

问题是包装内的子元素.如果有时我想制作完整的列,我会尝试这样做

@include span(full);
Run Code Online (Sandbox Code Playgroud)

但这并不完整,它有沟槽差距.然后我尝试另一个

@include span(full no-gutters);
Run Code Online (Sandbox Code Playgroud)

这使得元素没有排水沟,但它仍然留有水槽宽度.

我怎样才能让它充满(没有排水沟)?仅适用于某些元素.

谢谢Chalat

css layout susy

6
推荐指数
1
解决办法
5341
查看次数

在PHP中动态创建/插入关联数组

我正在尝试动态地在PHP中构建一个关联数组,而不是让我的策略正确.基本上,我想在数组结构中的某个深度插入一个值,例如:

$array['first']['second']['third'] = $val;
Run Code Online (Sandbox Code Playgroud)

现在,问题是,我不确定该深度是否可用,如果不是,我想为每个级别创建键(和数组),最后将值插入正确的级别.

由于我在我的代码中做了很多这样的事情,我厌倦了做一大堆"array_key_exists",所以我想做一个为我构建数组的函数,给出一个关键字列表.任何有关良好战略的帮助都表示赞赏.我确信有一种非常简单的方法,我只是没有得到它......

php associative-array

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

associative-array ×1

celery ×1

css ×1

django ×1

layout ×1

mocking ×1

php ×1

python ×1

susy ×1

unit-testing ×1