我终于为我的Django应用程序设置了测试,但是我在开始时遇到了困难。我使用model_mommy
为我的测试创建动态数据,但遇到以下问题:
我测试的视图应该向我显示特定用户必须完成的所有assignments
。为了测试这一点,我想创建500个作业,登录应用程序并检查它们是否显示。到目前为止,我有以下测试用例:
class TestLogin(TestCase):
def setUp(self):
self.client = Client()
user = User.objects.create(username='sam')
user.set_password('samspassword')
user.save()
def test_login(self):
self.client.login(username='sam', password='samspassword')
response = self.client.get('/')
print (response.content)
self.assertEqual(response.status_code, 200)
和
class TestShowAssignments(TestCase):
def setUp(self):
user_recipe = Recipe(User, username='sam', password="samspassword")
self.assignment = Recipe(Assignment,
coders = related(user_recipe))
self.assignments = self.assignment.make(_quantity=500)
def test_assignments(self):
self.assertIsInstance(self.assignments[0],Assignment)
self.assertEqual(len(self.assignments),500)
第一个测试通过正常并做了它应该做的事情:TestLogin
记录用户并显示他的帐户页面。
麻烦始于TestShowAssignments
,这会创建500个分配,但如果我查看print (self.assignments[0].coders)
的分配,我会得到auth.User.None
。因此,它不会将我定义的用户添加为与分配的关系。这里可能重要的是模型中的coders
字段是一个m2m字段,我尝试使用related
来解决这个问题,但这似乎不起作用。
还有什么办法无法登录:如果我使用TestLogin
TestShowAssignments
期间用于登录的相同代码,我无法登录并查看用户页面。
所以,我的问题是:如何使用model_mommy
创建分配并将其添加到特定用户,以便我可以以该用户身份登录并查看分配是否正确显示?
答案 0 :(得分:0)
你想要500个分配都将用户“sam”作为“编码器”字段中的单个条目吗?如果是这样,请尝试:
from model_mommy import mommy
...
class TestShowAssignments(TestCase):
def setUp(self):
self.user = mommy.make(User, username='sam', password='samspassword')
self.assignments = mommy.make(Assigment, coders=[self.user], _quantity=500)