Django 测试用例设置期间的断言
Assertions during Django test case setUps
我正在学习使用内置测试工具在 Django 中进行测试的方法,尤其是 django.test.TestCase
。我想知道在新测试 class 的初始 setUp
期间使用断言方法是否是最佳实践?
比如我有以下型号:
class TestProduct(BaseModel):
name = models.CharField(...)
class TestPrimaryImage(BaseModel):
url = models.TextField(...)
product = models.ForeignKey('TestProduct', ...)
该产品将具有由 ForeignKey
关系指定的主图像与 TestPrimaryImage
class 条目。
按照此处的示例:https://docs.djangoproject.com/en/2.1/topics/testing/overview/
我正在这样创建一个测试 class:
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
class 来引用。在setUp
期间做以下事情是否合适:
def setUp(self):
self.test_product = models.TestProduct.objects.create(
name='TestProductName'
)
self.assertIsInstance(self.test_product, models.TestProduct)
将新创建的对象分配给 class 变量并声明其创建?该断言意味着如果新产品未成功创建 none,其他测试方法将能够 运行。例如,TestMainImage
在创建期间将没有可创建引用的产品。
这 似乎 对我来说是一个明智的方法,但我是 Django 的新手,一般来说不要与测试老手混淆。
永远记住这一点:永远不要为 django 内部编写测试
django 已经过良好测试,如果您认为需要测试某些东西,请向他们发送拉取请求
所以对于您的示例,正如我们所知,models.TestProduct.objects.create()
总是 returns 一个实例或抛出一个执行。所以你不需要测试任何东西
我正在学习使用内置测试工具在 Django 中进行测试的方法,尤其是 django.test.TestCase
。我想知道在新测试 class 的初始 setUp
期间使用断言方法是否是最佳实践?
比如我有以下型号:
class TestProduct(BaseModel):
name = models.CharField(...)
class TestPrimaryImage(BaseModel):
url = models.TextField(...)
product = models.ForeignKey('TestProduct', ...)
该产品将具有由 ForeignKey
关系指定的主图像与 TestPrimaryImage
class 条目。
按照此处的示例:https://docs.djangoproject.com/en/2.1/topics/testing/overview/ 我正在这样创建一个测试 class:
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
class 来引用。在setUp
期间做以下事情是否合适:
def setUp(self):
self.test_product = models.TestProduct.objects.create(
name='TestProductName'
)
self.assertIsInstance(self.test_product, models.TestProduct)
将新创建的对象分配给 class 变量并声明其创建?该断言意味着如果新产品未成功创建 none,其他测试方法将能够 运行。例如,TestMainImage
在创建期间将没有可创建引用的产品。
这 似乎 对我来说是一个明智的方法,但我是 Django 的新手,一般来说不要与测试老手混淆。
永远记住这一点:永远不要为 django 内部编写测试
django 已经过良好测试,如果您认为需要测试某些东西,请向他们发送拉取请求
所以对于您的示例,正如我们所知,models.TestProduct.objects.create()
总是 returns 一个实例或抛出一个执行。所以你不需要测试任何东西