【问题标题】:model_mommy - user to assignment relationshipmodel_mommy - 用户到分配关系
【发布时间】:2016-04-02 20:55:06
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您想要在“编码员”字段中包含用户“sam”作为单个条目的 500 个作业吗?如果是这样,请尝试:

    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)
    

    【讨论】:

      猜你喜欢
      • 2019-12-30
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多