我需要为可以访问数据库的自定义字段编写测试。 代码如下:
class TestMyField (TestCase):
def SetUpClass(cls):
super().setUpClass()
class MyModel(models.Model):
class Meta:
app_label = 'test_app'
hfield = HEnumField(
enum=MyHEnum)
setattr(cls, 'MyModel', MyModel)
def test(self):
self.MyModel.objects.create(.....)
self.assert(.....)
我的问题是为此 test_model 创建一个数据库表。我打算在 TestMyField 类中进行
我试过了:
from django.db import connections
db_connection = connections['default']
with db_connection.constraint_checks_disabled():
with db_connection.schema_editor() as schema_editor :
schema_editor.create_model(MyModel)`
这会导致以下异常: django.db.utils.NotSupportedError:启用外键约束检查时无法使用 SQLite 模式编辑器。确保在进入 transaction.atomic() 上下文之前禁用它们,因为 SQLite 不支持在多语句事务中禁用它们。
我尝试使用 SimpleTestcase 作为我的测试类而不是 TestCase。这会导致以下异常 django.test.testcases.DatabaseOperationForbidden:SimpleTestCase 子类中不允许对“默认”进行数据库查询。子类化 TestCase 或 TransactionTestCase 以确保正确的测试隔离,或将“默认”添加到 commons.tests.tests_enums_and_fields.TestHEnumField.databases 以消除此故障。
问题出在哪里。欢迎任何帮助
上面的代码通过了。只要确保 TestClass 是一个 unittest.TestCase 广告而不是 TestCase 或 SimpleTestCase