如何使用 pytest-django 在 Django 中进行测试

2023-04-13 00:00:00 pytest 如何使用

pytest-django 是一个 pytest 扩展,使得 Django 应用程序更容易进行单元测试。使用 pytest-django,您可以创建一个 django_test.py 文件,并使用 pytest 运行此文件,执行所有 Django 单元测试。在这个文件中,您可以建立测试数据库并在测试结束时清除它。

下面是一个基本的 pytest-django 测试代码示例:

import pytest
from django.test import Client

@pytest.mark.django_db
def test_hello_world():
    client = Client()
    response = client.get('/')
    assert response.status_code == 200
    assert b'Hello World' in response.content

@pytest.mark.django_db
def test_home_page(db):
    client = Client()
    response = client.get('/')
    assert response.status_code == 200
    assert b'pidancode.com' in response.content

在上面的代码中,我们使用了 pytest 的 @pytest.mark.django_db 装饰器,它告诉 pytest 将测试用例运行在 Django 的测试数据库中。Django 中的测试数据库是在内存中创建的,并且在测试结束后立即删除。

我们使用 Django 的 Client 类模拟一个 HTTP 请求,并使用 assert 语句断言响应内容是否符合预期。

这是一个简单的 Django 测试示例,我们测试了根 URL 是否返回带有“pidancode.com”字符串的响应。如果返回这个字符串,测试通过,否则测试失败。

当您在命令行中运行 pytest 命令时,pytest-django会自动发现并加载您的测试文件。

在Django项目中,您需要在 settings.py 中添加如下内容:

# settings.py

INSTALLED_APPS = [
    ...
    'pytest_django',
    ...
]

# 配置 pytest 使用 django
pytest_configure(config):
    settings.DATABASES['default'] = {'ENGINE': 'django.db.backends.sqlite3', 'NAME': ':memory:'}

上述配置将 pytest 和 Django 集成,并配置 pytest-django 使用内存数据库。

相关文章