【问题标题】:django_nose ignores wrapped testsdjango_nose 忽略包装测试
【发布时间】:2018-03-29 11:58:51
【问题描述】:

我有这样的包装器

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

有什么想法吗?

【问题讨论】:

    标签: python django django-nose


    【解决方案1】:

    使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 2021-02-18
      • 2015-04-27
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多