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 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.CloudClusterStatus import CloudClusterStatus
from ...src.Cloud.Models.CloudPrintJobResponse import CloudPrintJobResponse
@ -28,8 +28,8 @@ class TestCloudApiClient(TestCase):
self.account.isLoggedIn.return_value = True
self.network = NetworkManagerMock()
with patch("CloudApiClient.QNetworkAccessManager", return_value = self.network):
self.api = CloudApiClient(self.account, self._errorHandler)
with patch.object(CloudApiClient, 'QNetworkAccessManager', return_value = self.network):
self.api = CloudApiClient.CloudApiClient(self.account, self._errorHandler)
def test_getClusters(self):
result = []

View file

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

View file

@ -5,7 +5,8 @@ from unittest.mock import patch, MagicMock
from UM.OutputDevice.OutputDeviceManager import OutputDeviceManager
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 .NetworkManagerMock import NetworkManagerMock, FakeSignal
@ -28,9 +29,9 @@ class TestCloudOutputDeviceManager(TestCase):
self.network = NetworkManagerMock()
self.timer = MagicMock(timeout = FakeSignal())
with patch("CloudApiClient.QNetworkAccessManager", return_value = self.network), \
patch("CloudOutputDeviceManager.QTimer", return_value = self.timer):
self.manager = CloudOutputDeviceManager()
with patch.object(CloudApiClient, "QNetworkAccessManager", return_value = self.network), \
patch.object(CloudOutputDeviceManager, "QTimer", return_value = self.timer):
self.manager = CloudOutputDeviceManager.CloudOutputDeviceManager()
self.clusters_response = parseFixture("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"])
@patch("CloudOutputDeviceManager.Message")
@patch.object(CloudOutputDeviceManager, "Message")
def test_api_error(self, message_mock):
self.clusters_response = {
"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):
return ["UM3NetworkPrinting"]
result = []
for entry in os.scandir(path):
if entry.is_dir() and os.path.exists(os.path.join(path, entry.name, "__init__.py")):