【发布时间】:2014-05-29 07:15:21
【问题描述】:
我创建了 Product 模型的方法 in_stock()。我需要在视图和模板渲染中模拟它。
我的测试:
def test_my_view(self):
with patch.object(models.Product, 'in_stock', return_value='sldkfsdf'):
# OR with patch.object(views.Product, 'in_stock', return_value='sldkfsdf'):
response = self.client.get(reverse('my_view'))
print response.content
我的看法:
def my_view(request):
product = Product.objects.get(pk=1)
print product.in_stock()
context = RequestContext(request, {
'product': product,
})
return render_to_response('product/my_view.xml', context)
我的模板:
{{ product.in_stock }}
我需要什么在标准输出中:
sldkfsdf
在模板中:
sldkfsdf
我在标准输出中得到了什么:
sldkfsdf
在模板中:
<value, returned by original Product.in_stock() method>
所以在 my_view 中调用 Product.in_stock() 效果很好。它不仅适用于模板。 :( 我做错了什么?我需要在模板渲染中模拟什么方法?
我有非常老的 Django - 1.1.1 :(
Python 2.7
模拟 1.0.1
【问题讨论】:
-
原谅我,你试过重新加载服务器吗?
-
@XORcist 我每次都运行测试。服务器已关闭。
-
我一头雾水:测试客户端不是在访问url吗?
-
@XORcist 您可能想阅读有关测试客户端如何工作的 FineManual。
-
@ambush 为什么要模拟
Product.in_stock()?您可以根据Product实例的.in_stock()结果测试response.content。
标签: python django templates mocking