Django4 中文入门教程 Django4.0 进阶测试主题-强制按顺序运行测试类

2024-02-25 开发教程 Django4 中文入门教程 匿名 4

如果你有一些测试类不能并行运行(例如,因为它们共享一个公共资源),你可以使用 ​django.test.testcases.SerializeMixin​ 来依次运行它们。这个 ​mixin ​使用一个文件系统 ​lockfile

例如,你可以使用 ​__file__​ 来确定同一文件中所有继承自 ​SerializeMixin ​的测试类将依次运行:

import os
from django.test import TestCase
from django.test.testcases import SerializeMixin
class ImageTestCaseMixin(SerializeMixin):
lockfile = __file__
def setUp(self):
self.filename = os.path.join(temp_storage_dir, 'my_file.png')
self.file = create_file(self.filename)
class RemoveImageTests(ImageTestCaseMixin, TestCase):
def test_remove_image(self):
os.remove(self.filename)
self.assertFalse(os.path.exists(self.filename))
class ResizeImageTests(ImageTestCaseMixin, TestCase):
def test_resize_image(self):
resize_image(self.file, (48, 48))
self.assertEqual(get_image_size(self.file), (48, 48))