gpt4 book ai didi

python-3.x - pytest 和 Failed : Database access not allowed, 使用 "django_db"标记,或 "db"或 "transactional_db"固定装置来启用它

转载 作者:行者123 更新时间:2023-12-03 15:03:38 40 4
gpt4 key购买 nike

调用期间 pytest 从 shell 我得到以下输出,因为我的测试存储在 apps.business.metrics.tools.tests.py , 并在导入模块期间
apps/business/metrics/widgets/employees/utilization.py
在模块调用期间对 SQL 进行实时调用。这是由
get_metric_columns('EmployeeUtilization', shapers=SHAPERS)
和 pytest 投诉:

➜ pytest
=========================================================================== test session starts ===========================================================================
platform linux -- Python 3.6.8, pytest-4.0.0, py-1.7.0, pluggy-0.8.0
Django settings: config.settings.local (from ini file)
rootdir: /home/dmitry/Projects/analytics/backend, inifile: pytest.ini
plugins: django-3.4.7, pylama-7.6.6, django-test-plus-1.1.1, celery-4.2.1
collected 60 items / 1 errors

================================================================================= ERRORS ==================================================================================
__________________________________________________________ ERROR collecting apps/business/metrics/tools.tests.py __________________________________________________________
../../../.pyenv/versions/3.6.8/envs/cam/lib/python3.6/site-packages/py/_path/local.py:668: in pyimport
__import__(modname)
apps/business/metrics/__init__.py:3: in <module>
from .widgets import * # noqa
apps/business/metrics/widgets/__init__.py:1: in <module>
from . import help # noqa
apps/business/metrics/widgets/help.py:1: in <module>
from .employees.utilization import EmployeeSwarmUtilization
apps/business/metrics/widgets/employees/utilization.py:19: in <module>
get_metric_columns('EmployeeUtilization', shapers=SHAPERS)
apps/business/metrics/tools.py:132: in get_metric_columns
m = get_metric(metric, period=p, shapers=shapers)
apps/business/metrics/data/__init__.py:23: in get_metric
return metrics[name](*args, **kwargs)
apps/business/metrics/data/abstract.py:441: in __init__
self._to_dataframe(self.sql or self._ingest())
apps/business/metrics/data/abstract.py:472: in _to_dataframe
source, connection, params=query_params, index_col=self.index
../../../.pyenv/versions/3.6.8/envs/cam/lib/python3.6/site-packages/pandas/io/sql.py:381: in read_sql
chunksize=chunksize)
../../../.pyenv/versions/3.6.8/envs/cam/lib/python3.6/site-packages/pandas/io/sql.py:1413: in read_query
cursor = self.execute(*args)
../../../.pyenv/versions/3.6.8/envs/cam/lib/python3.6/site-packages/pandas/io/sql.py:1373: in execute
cur = self.con.cursor()
../../../.pyenv/versions/3.6.8/envs/cam/lib/python3.6/site-packages/django/db/backends/base/base.py:255: in cursor
return self._cursor()
../../../.pyenv/versions/3.6.8/envs/cam/lib/python3.6/site-packages/django/db/backends/base/base.py:232: in _cursor
self.ensure_connection()
E Failed: Database access not allowed, use the "django_db" mark, or the "db" or "transactional_db" fixtures to enable it.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
========================================================================= 1 error in 2.43 seconds =========================================================================

有没有办法用pytest处理这种情况?

我知道我可以转换 get_metric_columns('EmployeeUtilization', shapers=SHAPERS) 进入部分函数并更改实现,但是还有其他方法吗?

最佳答案

解决方案:

import pytest


@pytest.mark.django_db
class TestExample:
def test_one():
...

假设您创建了一个 TestExample测试文件中的类,它应该用 @pytest.mark.django_db 装饰.它应该可以解决您的问题。

关于python-3.x - pytest 和 Failed : Database access not allowed, 使用 "django_db"标记,或 "db"或 "transactional_db"固定装置来启用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54661112/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com