如何使用 pytest-django 在 Django 中进行测试
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 使用内存数据库。
相关文章