gpt4 book ai didi

Django单元测试: How should one test abstract models?

转载 作者:行者123 更新时间:2023-12-02 07:01:46 24 4
gpt4 key购买 nike

在我的 Django 项目中,我有一个名为“core”的应用程序,其中包含所有可重用模型 mixins/抽象模型 (behaviors.py)、模型 (models.py)、 View (views.py) 和辅助函数 (utils.py)。 py):

core/
__init__.py
behaviors.py
models.py
utils.py
views.py

我现在想为这些文件编写测试。对于模型、实用程序和 View ,我只是像以前那样编写了单元测试。

我现在不确定应该如何测试behaviors.py 中包含的抽象模型。例如,我有这个模型 mixin:

import uuid as uuid_lib

from django.db import models


class UniversallyUniqueIdentifiable(models.Model):
uuid = models.UUIDField(
db_index=True,
default=uuid_lib.uuid4,
editable=False
)

class Meta:
abstract = True

如何测试抽象模型?在 one of the articles我以前学过胖模型,作者只是测试了他使用抽象模型的模型。但这对我来说感觉不太干燥,因为这意味着我必须在我使用的每个模型中测试 UUID 的添加。有更好的方法吗?

最佳答案

Anjaneyulu Batta的答案令人惊叹,但可读性较差,并且如果 Django 团队更改 connection 内部行为方式,那么可维护性可能会较差。

我会做什么:

  1. 通过任何使用此抽象类的模型来测试抽象类的通用属性。
  2. 测试该抽象类是否子类化
  3. 测试此模型的特定属性
  4. 对任何其他模型重复第 2 步和第 3 步。

示例:一个抽象类 Parallelogram 和一个使用它的名为 Square 的模型。

from unittest import TestCase

from tetrahedrons.models import Parallelogram, Square

class ParallelogramAbstractModelTest(TestCase):
def test_has_four_sides(self):
...

def test_parallel_opposite_sides(self):
...

class SquareModelTest(TestCase):
def test_subclasses_mobel_base(self):
self.assertTrue(issubclass(Square, Parallelogram))

def test_equal_sides(self):
...

关于Django单元测试: How should one test abstract models?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50248330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com