기본 작업이있는 사용자 정의 Db
클래스가 있습니다. 나는 그 주위에 테스트를 작성하려고 노력하고있다 - 나의 클래스의 __init__
에 내가 피하고 싶은 실제 db에 연결하고있다. (단위 테스트를 작성하고 있기 때문에 실제 db에 연결할 필요가 없다.) pytest : 내 클래스의 __init__을 모의 할 수 없습니다.
이
내 코드입니다 :@mock.patch('mydb.Db')
@pytest.mark.parametrize("input,expected", [
(
{
'key' : "x" ,
'value' : 5 ,
} ,
[ "x = 5" ]
) ,
])
def test_where_statement(mock_db, input, expected):
mock_db.__init__.return_value = None
assert expected == mock_db.where(input[ "key"] , input[ "value" ])._condition_list
그것은 내가 없음으로 RETURN_VALUE를 설정 라인에 실패 - 문제는 다음과 같습니다
def test_where_statement(mock_db, input, expected):
> mock_db.__init__.return_value = None
E AttributeError: 'instancemethod' object has no attribute 'return_value'
내가 할 만 init 함수를 조롱하고 싶어 where 함수를 실행할 수 있습니다 (예를 들어 내 쿼리의 where 문을 빌드합니다).
무엇이 누락 되었습니까?
테스트 파일에서'Db' 가져 오기를 패치하고 있습니까? – dm03514
@ dm03514 무엇을 의미합니까? 나는'mydb import Db'를 내 테스트 파일 위에 올려 놓았습니다. – ghostrider
@ghostrider 내 업데이트 된 답변을 확인하십시오. – erhesto