【问题标题】:django tests - model instance not createddjango 测试 - 未创建模型实例
【发布时间】:2019-05-09 13:45:05
【问题描述】:

我在使用 Django 和 DRF 为测试类中的特定模型创建固定装置时遇到问题。我正在使用model-mommy,但即使仅使用 Django ORM 为该模型创建单个实例也不起作用:

    from rest_framework.test import APIRequestFactory, APITestCase
    from model_mommy import mommy

    from api.v1 import views
    from company.models.models import CompanyUserProfile, ManagerRelation, DynamicRelation


    User = get_user_model()


    class APIViewsTestCase(APITestCase):

        @classmethod
        def setUpTestData(cls):
            supervisory_id = "1337"
            emp_group_id = "119"
            prd_scope_id = "1334"
            user = mommy.make(User)
            setattr(cls, 'user', user)
            company_user_profile_1 = mommy.make(CompanyUserProfile)
            requestor = mommy.make(
                CompanyUserProfile, is_manager=True,
                supervisory_id=supervisory_id, emp_group_id=emp_group_id,
                prd_scope_id=prd_scope_id, user=user
            )
            cls.user = user
            manager_relation = mommy.make(
                ManagerRelation, manager_id=requestor.id, mgr_type="Direct Mgr", _quantity=5
            )
            dynamic_relations = mommy.make(
                DynamicRelation,target_id=requestor.id, _quantity=5
            )

        def setUp(self) -> None:
            super().setUp()
            self.client.force_authenticate(user=self.user)

        def test_employee_view(self):
            CompanyUserProfile.objects.create(
                guid=uuid.uuid4(),
                csod_user_id='idcbijnccdocwocd', csod_username='djchbdcjnwdskjcn',
                id=3333
            )
            print('cup count:', CompanyUserProfile.objects.count())
            print('user count:', User.objects.count())
            print('m_rels count:', ManagerRelation.objects.count())
            print('d_rels count:', DynamicRelation.objects.count())
            rsp = self.client.get('/api/v1/employees/')
            self.assertEqual(rsp.status_code, HTTPStatus.OK)

但是CompanyUserProfile 记录并没有创建,两者都使用mommy.makeCompanyUserProfile.objects.create

-- test run output
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
cup count: 0
user count: 1
m_rels count: 5
d_rels count: 5
Destroying test database for alias 'default'...

CompanyUserProfile 继承自 AbstractCornerstoneUserProfile(抽象基础模型),这是此模型与其他模型的主要区别。

您知道造成这种情况的根本原因是什么吗?

【问题讨论】:

  • 不要在您的问题标题中添加 SOLVED 以表明您已经有了解决方案,而是我们邀请您发布答案

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


【解决方案1】:

更新: 解决了 -> 100% 是我的错,CompanyUserProfile 的自定义 ModelManager 不包括在 CompanyUserProfile.objects.count() 上创建的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-09
    • 2013-02-11
    • 1970-01-01
    • 2021-06-19
    • 2013-03-25
    • 2023-03-23
    • 1970-01-01
    • 2023-02-08
    相关资源
    最近更新 更多