>source

모의 라이브러리를 사용하고 기본적으로 일부 모듈 기능을 패치하려고합니다. 따라서 다음과 같은 기존 코드가 있습니다.

@patch('loader.utils.run_raise_exception_if_fail')
@patch('time.time', return_value=123)
def test_export_ok(self, _, run_command_mock):
    ....
    calls = run_command_mock.call_args_list
   

이런 종류의 작동이 잘되고 테스트가 호출되고 실행됩니다. 이러한 함수 인수의 의미와 생성 위치를 이해하려고합니다. 나는 이전에 조롱 기능을 사용하지 않았습니다.

이제 다른 기능을 모의하려고 시도하고 다음 패치 데코레이터를 추가했습니다.

@patch('assessment.utils.statistics', return_value={"counts": {'volume': 10, hits=10}})

이제 이것을 시도하고 실행하면 다음과 같은 오류가 발생합니다.

TypeError: test_export_ok() takes 2 positional arguments but 4 were given

패치 데코레이터와 실제 테스트에 대한 이러한 함수 인수에 대해 혼란 스럽습니다. 통계 방법에 대한 함수 서명은 다음과 같습니다.

def statistics(collisions: np.ndarray,
               obj_size: Union[List, Tuple]):

  • 답변 # 1

    @patch('loader.utils.run_raise_exception_if_fail')
    @patch('time.time', return_value=123)
    def test_export_ok(self, a, b):
        ....
        calls = run_command_mock.call_args_list
    
    
    

    단위 테스트를 작성하는 함수에 대해 주 함수에서 호출되는 내부 함수가 2 개 있고 패치를 원하면. 해당 반환 값과 함께 2 개의 패치 데코레이터를 추가합니다. 사용 된 패치 데코레이터 수에 해당하는 기본 테스트 함수 "a, b"에 변수를 추가합니다.

    이것을 시도하십시오.

    잘못된 인수 개수에 대한 오류는 해결되어야합니다.

관련 자료

  • 이전 Blazor 호스팅을 사용하여 전체 화면을 Vimeo 플레이어로 설정
  • 다음 jmsserializerbundle - JMS Serializer/Symfony 클래스가 없습니다