gpt4 book ai didi

python - pytest无法访问django类

转载 作者:行者123 更新时间:2023-12-01 02:45:50 25 4
gpt4 key购买 nike

我有一个 Django 应用程序,工作正常。当我使用 pytest 运行测试时,它仅适用于实用程序类(因此与 Django 无关)。

例如,从包 A 调用此包或另一个包中的实用程序类的测试工作正常。但是,一旦导入 django 类,我就会遇到错误。

示例 1:我导入我的模型(在测试中),用以下命令启动测试类:

from app.common.models import Country

--> 导入错误:没有名为 django.db 的模块

[models.py 中调用 django.db]

示例 2:我导入一个 url 解析器(在测试中),用以下命令启动测试类:

从 django.core.urlresolvers 导入反向

--> 导入错误:没有名为 django.core.urlresolvers 的模块

第一次尝试修复

接着另一个主题,我设置了 PYTHONPATH 的内容:

/home/user/pyenv/lib/python3.5/site-packages

此文件夹包含 virtualenv 中已安装的软件包:django、pytest、psycopg2 等。

1) 如果我将 DJANGO_SETTINGS_MODULE 设置为与应用程序相同的文件,“py.test”会给出以下错误结尾: 文件“/home/user/pyenv/lib/python3.5/site-packages/django/db/backends/postgresql/base.py”,第 24 行,位于 raise ImproperlyConfigured("加载 psycopg2 模块时出错:%s"% e)

2) 如果我将 DJANGO_SETTINGS_MODULE 设置为较小的测试设置文件,仅包含数据库信息,我将面临不同的错误(self.client 在测试中失败):

class Test(unittest.TestCase):
def testUrls(self):
response = self.client.get('/countries/all/get')
self.assertEqual(response.status_code, 200)

--> 属性错误:“测试”对象没有属性“客户端”

更多信息:

1) 应用程序的 python 解释器位于 virtualenv 中。

2)conftest.py位于应用程序根文件夹中,与manage.py位于同一位置,并具有以下内容:

import os
import sys

sys.path.append(os.path.dirname(__file__))

3) pytest.ini 也与 manage.py 位于同一文件夹中,内容如下:

[pytest]
python_files = test_*.py test*.py

4)最重要的是:应用程序运行良好,因此数据库设置有效

如果您知道哪里出了问题,以及如何测试 django 类,任何想法都将受到欢迎。预先感谢您。

最佳答案

我使用pytest-django我还在 pytest.ini 中显式设置了 DJANGO_SETTINGS_MODULE=project.my_settings 。每次都效果很好。

关于python - pytest无法访问django类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45269984/

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