Use patch.object to allow relative imports

Issue STAR-322.
This commit is contained in:
Daniel Schiavini 2019-01-17 12:58:23 +01:00
parent b51317b4f3
commit badb0b0ca9
4 changed files with 19 additions and 16 deletions

View file

@ -6,7 +6,7 @@ from unittest import TestCase
from unittest.mock import patch, MagicMock from unittest.mock import patch, MagicMock
from cura.UltimakerCloudAuthentication import CuraCloudAPIRoot from cura.UltimakerCloudAuthentication import CuraCloudAPIRoot
from ...src.Cloud.CloudApiClient import CloudApiClient from ...src.Cloud import CloudApiClient
from ...src.Cloud.Models.CloudClusterResponse import CloudClusterResponse from ...src.Cloud.Models.CloudClusterResponse import CloudClusterResponse
from ...src.Cloud.Models.CloudClusterStatus import CloudClusterStatus from ...src.Cloud.Models.CloudClusterStatus import CloudClusterStatus
from ...src.Cloud.Models.CloudPrintJobResponse import CloudPrintJobResponse from ...src.Cloud.Models.CloudPrintJobResponse import CloudPrintJobResponse
@ -28,8 +28,8 @@ class TestCloudApiClient(TestCase):
self.account.isLoggedIn.return_value = True self.account.isLoggedIn.return_value = True
self.network = NetworkManagerMock() self.network = NetworkManagerMock()
with patch("CloudApiClient.QNetworkAccessManager", return_value = self.network): with patch.object(CloudApiClient, 'QNetworkAccessManager', return_value = self.network):
self.api = CloudApiClient(self.account, self._errorHandler) self.api = CloudApiClient.CloudApiClient(self.account, self._errorHandler)
def test_getClusters(self): def test_getClusters(self):
result = [] result = []

View file

@ -7,7 +7,7 @@ from unittest.mock import patch, MagicMock
from UM.Scene.SceneNode import SceneNode from UM.Scene.SceneNode import SceneNode
from cura.UltimakerCloudAuthentication import CuraCloudAPIRoot from cura.UltimakerCloudAuthentication import CuraCloudAPIRoot
from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel
from ...src.Cloud.CloudApiClient import CloudApiClient from ...src.Cloud import CloudApiClient
from ...src.Cloud.CloudOutputDevice import CloudOutputDevice from ...src.Cloud.CloudOutputDevice import CloudOutputDevice
from ...src.Cloud.Models.CloudClusterResponse import CloudClusterResponse from ...src.Cloud.Models.CloudClusterResponse import CloudClusterResponse
from .Fixtures import readFixture, parseFixture from .Fixtures import readFixture, parseFixture
@ -41,17 +41,18 @@ class TestCloudOutputDevice(TestCase):
self.network = NetworkManagerMock() self.network = NetworkManagerMock()
self.account = MagicMock(isLoggedIn=True, accessToken="TestAccessToken") self.account = MagicMock(isLoggedIn=True, accessToken="TestAccessToken")
self.onError = MagicMock() self.onError = MagicMock()
with patch("CloudApiClient.QNetworkAccessManager", with patch.object(CloudApiClient, "QNetworkAccessManager", return_value = self.network):
return_value = self.network): self._api = CloudApiClient.CloudApiClient(self.account, self.onError)
self._api = CloudApiClient(self.account, self.onError)
self.device = CloudOutputDevice(self._api, self.cluster) self.device = CloudOutputDevice(self._api, self.cluster)
self.cluster_status = parseFixture("getClusterStatusResponse") self.cluster_status = parseFixture("getClusterStatusResponse")
self.network.prepareReply("GET", self.STATUS_URL, 200, readFixture("getClusterStatusResponse")) self.network.prepareReply("GET", self.STATUS_URL, 200, readFixture("getClusterStatusResponse"))
def tearDown(self): def tearDown(self):
try:
super().tearDown() super().tearDown()
self.network.flushReplies() self.network.flushReplies()
finally:
for patched_method in self.patches: for patched_method in self.patches:
patched_method.stop() patched_method.stop()

View file

@ -5,7 +5,8 @@ from unittest.mock import patch, MagicMock
from UM.OutputDevice.OutputDeviceManager import OutputDeviceManager from UM.OutputDevice.OutputDeviceManager import OutputDeviceManager
from cura.UltimakerCloudAuthentication import CuraCloudAPIRoot from cura.UltimakerCloudAuthentication import CuraCloudAPIRoot
from ...src.Cloud.CloudOutputDeviceManager import CloudOutputDeviceManager from ...src.Cloud import CloudApiClient
from ...src.Cloud import CloudOutputDeviceManager
from .Fixtures import parseFixture, readFixture from .Fixtures import parseFixture, readFixture
from .NetworkManagerMock import NetworkManagerMock, FakeSignal from .NetworkManagerMock import NetworkManagerMock, FakeSignal
@ -28,9 +29,9 @@ class TestCloudOutputDeviceManager(TestCase):
self.network = NetworkManagerMock() self.network = NetworkManagerMock()
self.timer = MagicMock(timeout = FakeSignal()) self.timer = MagicMock(timeout = FakeSignal())
with patch("CloudApiClient.QNetworkAccessManager", return_value = self.network), \ with patch.object(CloudApiClient, "QNetworkAccessManager", return_value = self.network), \
patch("CloudOutputDeviceManager.QTimer", return_value = self.timer): patch.object(CloudOutputDeviceManager, "QTimer", return_value = self.timer):
self.manager = CloudOutputDeviceManager() self.manager = CloudOutputDeviceManager.CloudOutputDeviceManager()
self.clusters_response = parseFixture("getClusters") self.clusters_response = parseFixture("getClusters")
self.network.prepareReply("GET", self.URL, 200, readFixture("getClusters")) self.network.prepareReply("GET", self.URL, 200, readFixture("getClusters"))
@ -112,7 +113,7 @@ class TestCloudOutputDeviceManager(TestCase):
active_machine_mock.setMetaDataEntry.assert_called_with("um_cloud_cluster_id", cluster2["cluster_id"]) active_machine_mock.setMetaDataEntry.assert_called_with("um_cloud_cluster_id", cluster2["cluster_id"])
@patch("CloudOutputDeviceManager.Message") @patch.object(CloudOutputDeviceManager, "Message")
def test_api_error(self, message_mock): def test_api_error(self, message_mock):
self.clusters_response = { self.clusters_response = {
"errors": [{"id": "notFound", "title": "Not found!", "http_status": "404", "code": "notFound"}] "errors": [{"id": "notFound", "title": "Not found!", "http_status": "404", "code": "notFound"}]

View file

@ -29,6 +29,7 @@ def where(exe_name: str, search_path: str = os.getenv("PATH")) -> str:
def findModules(path): def findModules(path):
return ["UM3NetworkPrinting"]
result = [] result = []
for entry in os.scandir(path): for entry in os.scandir(path):
if entry.is_dir() and os.path.exists(os.path.join(path, entry.name, "__init__.py")): if entry.is_dir() and os.path.exists(os.path.join(path, entry.name, "__init__.py")):