Django测试用例设置期间的断言

时间:2018-10-17 14:22:56

标签: django django-testing django-tests

我只是在学习使用内置测试工具(尤其是django.test.TestCase)在Django中进行测试的方法。我想知道在新测试类的初始setUp期间使用断言方法是否是最佳实践?

例如,我有以下模型:

class TestProduct(BaseModel):
    name = models.CharField(...)

class TestPrimaryImage(BaseModel):
    url = models.TextField(...)
    product = models.ForeignKey('TestProduct', ...)

该产品将具有由ForeignKey关系和TestPrimaryImage类条目指定的主图像。

按照以下示例进行操作:https://docs.djangoproject.com/en/2.1/topics/testing/overview/ 我正在这样创建一个测试类:

class NewProductTestCase(TestCase):

    def setUp(self):

        models.TestProduct.objects.create(
            name='TestProductName'
        )

    def TestMainImage(self):

        models.TestPrimaryImage.objects.create(
            url="https://example.com/test-image-url.jpg",
            product=?
        )

我不确定的部分集中在TestMainImage方法上,该方法需要一个TestProduct类来引用。在setUp期间执行以下操作是否合适:

def setUp(self):

    self.test_product = models.TestProduct.objects.create(
        name='TestProductName'
    )

    self.assertIsInstance(self.test_product, models.TestProduct)

将新创建的对象分配给类变量并声明其创建?该断言意味着,如果未成功创建新产品,则其他任何测试方法都将无法运行。例如,TestMainImage将没有产品可以在创建期间创建对它的引用。

对我来说,这似乎很明智,但是我是Django的新手,不要为一般的测试老手感到困惑。

1 个答案:

答案 0 :(得分:2)

始终牢记这一点:永远不要为Django内部构件编写测试

django已经过了很好的测试,如果您认为有必要进行测试,请向他们发送请求请求

因此,对于您的示例,我们知道models.TestProduct.objects.create()总是返回一个实例或抛出一个执行。所以您不需要测试任何东西