두 개의 모듈이있다.django 형태의 함수를 조롱하다
a.py
def get_resource(arg1, arg2):
return Modelobject based on arg1 and arg2 or None
b.py (양식)
from a import get_resource
class A(forms.Form):
arg1 = forms.CharField()
arg2 = forms.CharField()
def clean(self):
res = get_resource(arg1, arg2)
if res is None:
validationerror
else:
cleaned_data.update(res_key=res)
내가 어떤 데이터베이스를 필요로이 donot하지만 난 그게 작동시킬 수 couldnot 그래서 지금은 get_resource 부분을 조롱 할 필요가있다.
여기 내가 시도했지만, 작동하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까 ? 나는 모의 테스트에서 아주 초보자입니다 때문에
class Test(TestCase):
def test_form_a(self):
with patch('b.get_resource') as mock_tool:
mock_tool.return_value = MagicMock(spec=MusicModel)
form_data = {'arg1': '1', 'arg2': 'Music'}
form = A(data=form_data)
또한 나는 누구도 날 올바른 방향으로 보여줄 수있는 기능
def my_side_effect(*args, **kwargs):
return value based on arg[0] and arg[1]
mock_tool.side_effect = my_side_effect
와 side_effects를 시도?
왜, 특히 데이터베이스를 필요로하지 않도록 조롱하고 싶습니까? "순수한"단위 테스트에서 그렇다는 것을 알고 있지만 Django의 단위 테스트 환경에는 테스트 DB를 정확하게 설정하여 이런 종류의 것에 대해 걱정할 필요가 없습니다. –
글쎄, 난 그냥 테스트 및 물건 시작. 그리고 나는 폼의 깨끗한 메소드를 오버라이드하고 싶기 때문에, 나는 데이터베이스를 건드리지 않고 그것을 끝낼 수 있는지보고 싶다. 나는 데이터베이스를 만지고 비품을 만들면 unittest가 아닐 것이라고 생각합니다. – sagarchalise