0

我终于为我的 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,但这似乎不起作用。

登录也不起作用:如果我使用与登录期间相同的代码TestLoginTestShowAssignments我将无法登录并查看用户页面。

所以,我的问题是:如何使用model_mommy创建作业并将它们添加到特定用户,以便我可以以该用户身份登录并查看作业是否正确显示?

4

1 回答 1

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)
于 2016-04-14T16:59:57.240 回答