在我的一生中,我无法理解这一点,我也很难找到关于它的信息。在
我有一个Django视图,它接受一个作为主键的参数(例如:URL/problem/12),并加载一个包含参数模型信息的页面。在
我想模仿我的视图用于测试的模型,但我无法理解,这是我尝试过的:
@patch('apps.problem.models.Problem',)
def test_search_response(self, problem, chgbk, dispute):
problem(problem_id=854, vendor_num=100, chgbk=122)
request = self.factory.get(reverse('dispute_landing:search'))
request.user = self.user
request.usertype = self.usertype
response = search(request, problem_num=12)
self.assertTemplateUsed('individual_chargeback_view.html')
然而,我永远无法让测试真正找到问题号,就好像模型不存在一样。在
我认为这是因为如果你模仿整个模型本身,那么这个模型就不存在了,因为任何创建/保存它的函数都会被模仿。如果
Problem
只是一个未经任何方式修改的模拟模型类,那么它对与数据库、ORM或任何可以从search()方法中发现的内容一无所知。在你可以采取一种方法,而不是嘲笑模型本身,那就是创建工厂男孩模型工厂。由于每次测试运行都会破坏测试数据库,因此这些工厂是创建测试数据的好方法:
http://factoryboy.readthedocs.io/en/latest/
你可以像这样开一个问题工厂:
然后使用它创建一个实际存在于数据库中的模型:
^{pr2}$相关问题 更多 >
编程相关推荐