model_mommy - 用户与分配关系

时间:2016-04-02 20:55:06

标签: django testing django-testing django-tests model-mommy

我终于为我的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创建分配并将其添加到特定用户,以便我可以以该用户身份登录并查看分配是否正确显示?

1 个答案:

答案 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)