Django_nose忽略了包装测试

2024-09-20 03:46:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这种包装

def external_services_mock(f):
    @patch('service.remote_call1')
    @patch('service.remote_call2')
    def wrapper(self, remote_call2_mock, remote_call1_mock, *args, **kwargs):
        remote_call1_mock.return_value = None

        def test_mocks():
            return remote_call1_mock, remote_call2_mock

        f(self, test_mocks, *args, **kwargs)

    return wrapper

和测试:

@external_services_mock
def test_add_callback(self, test_mocks):
    remote_call1_mock, remote_call2_mock = test_mocks()

    // do smth

    // assert smth

django_nose runner忽略包装测试,通常定期运行

Django版本2.0.2 django_nose 1.4.5

有什么想法吗


Tags: testselfreturnremotedefserviceargswrapper
1条回答
网友
1楼 · 发布于 2024-09-20 03:46:21

使用functools.wraps来保留包装测试的名称似乎可以解决问题

from functools import wraps

def external_services_mock(f):
    @patch('service.remote_call1')
    @patch('service.remote_call2')
    @wraps(f)
    def wrapper(self, remote_call2_mock, remote_call1_mock, *args, **kwargs):
        remote_call1_mock.return_value = None

        def test_mocks():
            return remote_call1_mock, remote_call2_mock

        f(self, test_mocks, *args, **kwargs)

    return wrapper

相关问题 更多 >