微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django PyTest - 即使使用 django_db 和设备也不允许数据库访问错误?

如何解决Django PyTest - 即使使用 django_db 和设备也不允许数据库访问错误?

我正在 django 中学习 PyTest,遇到了无法解决的问题。

我收到此错误

____________________________________________________________________________________________________________ ERROR collecting prices_tool/tests/test_views.py ____________________________________________________________________________________________________________
prices_tool/tests/test_views.py:9: in <module>
    from prices_tool.views import results
prices_tool/views.py:14: in <module>
    from prices_tool.forms import SearchForm,FreeSearchForm
prices_tool/forms.py:7: in <module>
    class FreeSearchForm(forms.Form):
prices_tool/forms.py:11: in FreeSearchForm
    for make in makes:
../prices_tool-env/lib/python3.8/site-packages/django/db/models/query.py:287: in __iter__
    self._fetch_all()
../prices_tool-env/lib/python3.8/site-packages/django/db/models/query.py:1308: in _fetch_all
    self._result_cache = list(self._iterable_class(self))
../prices_tool-env/lib/python3.8/site-packages/django/db/models/query.py:111: in __iter__
    for row in compiler.results_iter(chunked_fetch=self.chunked_fetch,chunk_size=self.chunk_size):
../prices_tool-env/lib/python3.8/site-packages/django/db/models/sql/compiler.py:1108: in results_iter
    results = self.execute_sql(MULTI,chunked_fetch=chunked_fetch,chunk_size=chunk_size)
../prices_tool-env/lib/python3.8/site-packages/django/db/models/sql/compiler.py:1154: in execute_sql
    cursor = self.connection.cursor()
../prices_tool-env/lib/python3.8/site-packages/django/utils/asyncio.py:26: in inner
    return func(*args,**kwargs)
../prices_tool-env/lib/python3.8/site-packages/django/db/backends/base/base.py:259: in cursor
    return self._cursor()
../prices_tool-env/lib/python3.8/site-packages/django/db/backends/base/base.py:235: in _cursor
    self.ensure_connection()
E   RuntimeError: Database access not allowed,use the "django_db" mark,or the "db" or "transactional_db" fixtures to enable it.
========================================================================================================================== short test summary info ===========================================================================================================================
ERROR prices_tool/tests/test_views.py - RuntimeError: Database access not allowed,or the "db" or "transactional_db" fixtures to enable it.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
============================================================================================================================== 1 error in 0.47s ==============================================================================================================================

似乎我无法从我的 views.py 中导入任何方法。当然,我尝试添加 @pytest.mark.django_db 它没有用。我在谷歌上搜索在这里找到了一些帖子,并在我的 conftest.py添加了这个:

@pytest.fixture(autouse=True)
def enable_db_access_for_all_tests(db):
    pass

当这不起作用时,我什至尝试过:

@pytest.fixture(scope='session')
def django_db_setup():
    settings.DATABASES['default'] = {
        'ENGINE': 'django.db.backends.sqlite3','NAME': 'path/to/dbfile.sqlite3',}

但没有修复或更改错误消息。我该如何解决这个问题?

谢谢和干杯!

解决方法

我已经找到了解决我的问题的方法。我不确定这样做是否明智,但现在这是显而易见的解决方案。

只需在 public static int NbYear(int p0,double percent,int aug,int p) { // your code double percent_div = (percent <= 0.0) ? 0.0 : percent / 100.0; var count = 0; while (p0 > p); { var annual_increase = p0 * percent_div + aug; int annual_inc = Convert.ToInt32(annual_increase); p0 = p0 + annual_inc; count++; } return count; } 下方移动有问题视图的导入。

例如:

@pytest.mark.django_db

通过这种方式,您将避免由于某些视图正在导入数据库内容而发生的错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。