我只是在学习使用内置测试工具(尤其是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的新手,不要为一般的测试老手感到困惑。
答案 0 :(得分:2)
始终牢记这一点:永远不要为Django内部构件编写测试
django已经过了很好的测试,如果您认为有必要进行测试,请向他们发送请求请求
因此,对于您的示例,我们知道models.TestProduct.objects.create()
总是返回一个实例或抛出一个执行。所以您不需要测试任何东西