【发布时间】:2018-10-17 14:22:56
【问题描述】:
我只是在学习使用内置测试工具在 Django 中进行测试的方法,尤其是 django.test.TestCase。我想知道在新测试类的初始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 新手,一般来说不要对测试老手感到困惑。
【问题讨论】:
-
为什么必须在setUp中添加断言?如果第一次设置失败,很自然所有相关的单元测试都失败了。
标签: django django-testing django-tests