Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
在pytest中模拟Django包含标记_Django_Pytest - Fatal编程技术网

在pytest中模拟Django包含标记

在pytest中模拟Django包含标记,django,pytest,Django,Pytest,我有一个包含标签: from django import template from accounts.models import UserTracking register = template.Library() @register.simple_tag(takes_context=True) def has_shipped(context): return UserTracking.objects.filter(shipping=True, user=context['requ

我有一个包含标签:

from django import template
from accounts.models import UserTracking
register = template.Library()

@register.simple_tag(takes_context=True) 
def has_shipped(context):
    return UserTracking.objects.filter(shipping=True, user=context['request'].user).exists()
我正在测试一个函数,
,它调用一个包含该标记的模板

from unittest.mock import patch
from myproject.views import awarded

@patch('myproject.templatetags.something.has_shipped')
def test_awarded(mymock, rf):
    mymock.return_value = ''   # this is not having any effect
    result = awarded(rf)
    assert result
以及测试中的代码:

def awarded(request):
    return render(request, 'awarded_form.html', {'revisions' : revisions})

Pytest对我大喊大叫,因为它说我正在使用数据库,我正在使用数据库(但我不想),所以我想模拟包含数据库调用的函数,
has\u已发布
。我该怎么做?当我试图直接从声明函数的位置模拟函数时,它不起作用,因为它显然不是正确的作用域,那么我该如何做呢?这是一种更容易在上面抛出
@mark\u db
的情况吗?

@Md.NahidurRahman这个问题与补丁根本不起作用有关。我的问题是专门询问如何模拟/修补Django包含标记。