在 Django 插件测试套件中创建示例项目的最佳方式
best way to create example project in a django plugin test suite
这可能是一个简单的问题,但我无法理解它。
鉴于我制作了一个 Django 插件应用程序,让我们将其命名为 foo
,它添加了一些其他应用程序可以使用的数据库功能(例如,必须继承的模型),我想为该应用程序添加测试。
结构:
foo/
apps.py
models.py
tests/
test_foo_basic.py
test_bar.py
...
setup.py
README.md
...
该项目不是完整的 Django 应用程序,因为它是其他人的插件 app。所以我需要在测试目录中创建一个 fake Django 项目,至少有一个应用程序,它定义了一些继承自 foo.models.<some_model>
的模型并测试它,对吗?
这是唯一的方法吗?这对我来说似乎很重要。
如果是这样,给我一个“是这样”的答案就可以了。我会接受 ;-)
如果没有,请告诉我我很复杂并给我看一些更简单的东西,pytest 插件等?
为了测试,我需要一个
经过一番努力,我发现了自己。
根据pytest-django docs,您可以在conftest.py
中使用pytest_configure()
为这种情况设置一个“伪”Django环境:
# conftest.py
import django
from django.conf import settings
def pytest_configure():
settings.configure(
DATABASES={
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": ":memory:",
}
},
INSTALLED_APPS=[
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"django.contrib.sites",
"your.app"
],
)
django.setup()
这样,你不需要 pytest.ini
,不需要 DJANGO_SETTINGS_MODULE
环境,最好的是:** 你不需要完整的虚拟 Django 项目`
如果您需要测试模块加载等项目功能,它无济于事。但是对于简单的单元测试,这非常有效。
这可能是一个简单的问题,但我无法理解它。
鉴于我制作了一个 Django 插件应用程序,让我们将其命名为 foo
,它添加了一些其他应用程序可以使用的数据库功能(例如,必须继承的模型),我想为该应用程序添加测试。
结构:
foo/
apps.py
models.py
tests/
test_foo_basic.py
test_bar.py
...
setup.py
README.md
...
该项目不是完整的 Django 应用程序,因为它是其他人的插件 app。所以我需要在测试目录中创建一个 fake Django 项目,至少有一个应用程序,它定义了一些继承自 foo.models.<some_model>
的模型并测试它,对吗?
这是唯一的方法吗?这对我来说似乎很重要。
如果是这样,给我一个“是这样”的答案就可以了。我会接受 ;-) 如果没有,请告诉我我很复杂并给我看一些更简单的东西,pytest 插件等? 为了测试,我需要一个
经过一番努力,我发现了自己。
根据pytest-django docs,您可以在conftest.py
中使用pytest_configure()
为这种情况设置一个“伪”Django环境:
# conftest.py
import django
from django.conf import settings
def pytest_configure():
settings.configure(
DATABASES={
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": ":memory:",
}
},
INSTALLED_APPS=[
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"django.contrib.sites",
"your.app"
],
)
django.setup()
这样,你不需要 pytest.ini
,不需要 DJANGO_SETTINGS_MODULE
环境,最好的是:** 你不需要完整的虚拟 Django 项目`
如果您需要测试模块加载等项目功能,它无济于事。但是对于简单的单元测试,这非常有效。