在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包含标记。