安装mysqlclient后DRF测试出现KeyError: 'ATOMIC_REQUESTS'求助
解决DRF测试套件KeyError: 'ATOMIC_REQUESTS'问题
- 检查所有数据库配置:确保
DATABASES字典中每个数据库(包括新增的MySQL辅助库)都显式配置ATOMIC_REQUESTS字段,无论设为True还是False。Django的make_view_atomic方法会尝试读取每个数据库的该配置,缺失则触发KeyError。示例配置:
DATABASES = { 'default': { 'ENGINE': 'django_sql_server', 'NAME': 'your_sqlserver_db', 'ATOMIC_REQUESTS': True, # 其他SQL Server配置项 }, 'mysql_aux': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_mysql_db', 'ATOMIC_REQUESTS': False, # 必须显式声明 # 其他MySQL配置项 } }
- 强化pytest数据库隔离:除了用
@pytest.mark.django_db(databases=["default"])标记测试,还可以在pytest.ini中全局指定默认测试数据库,避免意外加载其他数据库配置:
[pytest] django_db_databases = default
排查视图跨数据库依赖:如果测试涉及的视图中引用了MySQL辅助库的模型,即使测试用例未实际调用该逻辑,Django加载视图时仍会检查对应数据库的配置。确保这类数据库的
ATOMIC_REQUESTS已配置。重置Django配置缓存:修改配置后重启测试环境,或在项目根目录的
conftest.py中添加以下代码强制重新加载配置:
import django django.setup()
内容的提问来源于stack exchange,提问作者Fonnae
相关产品推荐
相关产品推荐

