首页 > 解决方案 > Pytest-django 依赖注入

问题描述

pytest-django 如何知道是否用 a RequestFactoryorClient实例注入测试函数?

def test_with_client(client):
    response = client.get('/')
    assert response.content == 'Foobar'


def test_details(rf):
    request = rf.get('/customer/details')
    response = my_view(request)
    assert response.status_code == 200

换句话说:您如何确保输入夹具是某种类型?

标签: pythondjangopytest

解决方案


pytest 不基于 type 而是基于name注入。输入参数的名称与注册的灯具匹配。

请参阅此处的文档,但简而言之

import pytest

@pytest.fixture
def connection():
    return Connection()

def test_my_object(connection):
    target = MyObject(connection)

    assert ...

您可以使用类型注释来帮助 PyCharm 等推断正确的类型,但 pytest 不使用这些。


推荐阅读