From b7a6919b10da6acc522d3ba069c5a9e6fc9df344 Mon Sep 17 00:00:00 2001 From: Thomas Schultz Date: Tue, 6 Dec 2016 18:28:19 -0500 Subject: [PATCH] Add vision detect_labels() system tests. --- system_tests/data/car.jpg | Bin 0 -> 67035 bytes system_tests/vision.py | 81 ++++++++++++++++++++++++++++++++++---- 2 files changed, 74 insertions(+), 7 deletions(-) create mode 100644 system_tests/data/car.jpg diff --git a/system_tests/data/car.jpg b/system_tests/data/car.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5f47a90effb71caf1ce7528d024693aab1c99e4f GIT binary patch literal 67035 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 D!NYkj literal 0 HcmV?d00001 diff --git a/system_tests/vision.py b/system_tests/vision.py index d783994b78d7..94a1b2bd0206 100644 --- a/system_tests/vision.py +++ b/system_tests/vision.py @@ -24,11 +24,13 @@ from system_test_utils import unique_resource_id from retry import RetryErrors +import six _SYS_TESTS_DIR = os.path.abspath(os.path.dirname(__file__)) LOGO_FILE = os.path.join(_SYS_TESTS_DIR, 'data', 'logo.png') FACE_FILE = os.path.join(_SYS_TESTS_DIR, 'data', 'faces.jpg') +LABEL_FILE = os.path.join(_SYS_TESTS_DIR, 'data', 'car.jpg') class Config(object): @@ -54,6 +56,14 @@ def tearDownModule(): bucket_retry(Config.TEST_BUCKET.delete)(force=True) +class BaseVisionTestCase(unittest.TestCase): + def _assert_coordinate(self, coordinate): + if coordinate is None: + return + self.assertIsInstance(coordinate, (int, float)) + self.assertNotEqual(coordinate, 0.0) + + class TestVisionClientLogo(unittest.TestCase): def setUp(self): self.to_delete_by_case = [] @@ -111,7 +121,7 @@ def test_detect_logos_gcs(self): self._assert_logo(logo) -class TestVisionClientFace(unittest.TestCase): +class TestVisionClientFace(BaseVisionTestCase): def setUp(self): self.to_delete_by_case = [] @@ -119,12 +129,6 @@ def tearDown(self): for value in self.to_delete_by_case: value.delete() - def _assert_coordinate(self, coordinate): - if coordinate is None: - return - self.assertIsInstance(coordinate, (int, float)) - self.assertGreater(abs(coordinate), 0.0) - def _assert_likelihood(self, likelihood): from google.cloud.vision.likelihood import Likelihood @@ -215,3 +219,66 @@ def test_detect_faces_filename(self): self.assertEqual(len(faces), 5) for face in faces: self._assert_face(face) + + +class TestVisionClientLabel(BaseVisionTestCase): + DESCRIPTIONS = ( + 'car', + 'vehicle', + 'land vehicle', + 'automotive design', + 'wheel', + 'automobile make', + 'luxury vehicle', + 'sports car', + 'performance car', + 'automotive exterior', + ) + + def setUp(self): + self.to_delete_by_case = [] + + def tearDown(self): + for value in self.to_delete_by_case: + value.delete() + + def _assert_label(self, label): + + self.assertIsInstance(label, EntityAnnotation) + self.assertIn(label.description, self.DESCRIPTIONS) + self.assertIsInstance(label.mid, six.text_type) + self.assertGreater(label.score, 0.0) + + def test_detect_labels_content(self): + client = Config.CLIENT + with open(LABEL_FILE, 'rb') as image_file: + image = client.image(content=image_file.read()) + labels = image.detect_labels() + self.assertEqual(len(labels), 10) + for label in labels: + self._assert_label(label) + + def test_detect_labels_gcs(self): + bucket_name = Config.TEST_BUCKET.name + blob_name = 'car.jpg' + blob = Config.TEST_BUCKET.blob(blob_name) + self.to_delete_by_case.append(blob) # Clean-up. + with open(LABEL_FILE, 'rb') as file_obj: + blob.upload_from_file(file_obj) + + source_uri = 'gs://%s/%s' % (bucket_name, blob_name) + + client = Config.CLIENT + image = client.image(source_uri=source_uri) + labels = image.detect_labels() + self.assertEqual(len(labels), 10) + for label in labels: + self._assert_label(label) + + def test_detect_labels_filename(self): + client = Config.CLIENT + image = client.image(filename=LABEL_FILE) + labels = image.detect_labels() + self.assertEqual(len(labels), 10) + for label in labels: + self._assert_label(label)