未指定目录时,修补程序不适用于pytest

时间:2019-03-02 04:34:06

标签: python django pytest pipenv xdist

我在pytest和模拟补丁方面有一个奇怪的问题。
我的django应用程序在收到请求时调用货币交易所的API。
我想在测试时修补它们,但是不起作用。

下面的命令成功。它不会向真实的交换服务器发送任何请求。

pipenv run pytest --reuse-db myapp

但是,下面的命令失败,因为它会将请求发送到实际的Exchange API服务器。 似乎补丁无法正常工作。

pipenv run pytest --reuse-db

项目结构如下。

django_proj/
    django_proj/
    myapp/
        views.py
        urls.py
        backends/
            backend1.py
            backend2.py
        tests/
            test_views.py

test_views.py

class MockBackend1:
    # Some mock methods
    # They returns mock values instead of sending requests to real servers.


class MockBackend2:
    # Some mock methods
    # They returns mock values instead of sending requests to real servers.


@patch('myapp.backends.backend1.Backend1', MockBackend1)
@patch('myapp.backends.backend2.Backend2', MockBackend2)
class TestListAPIView:
    @pytest.fixture
    ...

    def test_list(self, client, params):
        """Test list."""
        response = client.get(
            reverse("myapp:list"),
            data=params
        )

        content = response.json()

        # sample assertion
        asset content == mocked_content

是什么原因导致上述差异?
以及如何使修补程序在两种情况下都能正常工作?

谢谢。

0 个答案:

没有答案