Django: Как подружить метод, вызываемый в api тесте?
Я постоянно попадаю в метод scan_file()
, который должен быть высмеян. Это происходит при вызове self.client.post()
в тесте django api. Настройка приложения приведена ниже, я пробовал высмеивать импортированный scan_file patch("myapp.views.scan_file")
, а также местоположение источника patch("myapp.utils.scan_file")
ни то, ни другое не работает.
# myapp.views.py
from myapp.utils import scan_file
class MyViewset():
def scan():
scan_file(file) # <- this should be mocked but its entering the code
#myapp.utils.py
def scan_file(file) -> bool:
boolean_result = call_api(file)
return boolean_result
#test_api.py
class MyAppTest():
def test_scan_endpoint(self):
patcher = patch("myapp.views.scan_file")
MockedScan = patcher.start()
MockedScan.return_value = True
# This post hits the scan_file code during the api
# call but it should be mocked.
resp = self.client.post(
SCAN_ENDPOINT,
data={
"file" :self.text_file,
"field1" : "Progress"
}
)
Я также попробовал следующий синтаксис для mocking, и попробовал включить его в тест setup()
также:
self.patcher = patch("myapp.views.scan_file")
self.MockedScan = self.patcher.start()
self.MockedScan.return_value = True