From c642f49f93fc11d9710ca65954dfc508e3730d85 Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Sun, 13 Sep 2015 16:06:06 -0400 Subject: [PATCH] TST: Fix skipped unit tests in test_ga. Install python-gflags using pip. #11090 --- ci/requirements-2.7.pip | 1 + ci/requirements-2.7.txt | 1 - ci/requirements-2.7_SLOW.txt | 1 - pandas/io/tests/test_ga.py | 117 ++++++++++++++++++----------------- 4 files changed, 62 insertions(+), 58 deletions(-) diff --git a/ci/requirements-2.7.pip b/ci/requirements-2.7.pip index ff1978a8d45ed..644457d69b37f 100644 --- a/ci/requirements-2.7.pip +++ b/ci/requirements-2.7.pip @@ -1,3 +1,4 @@ blosc httplib2 google-api-python-client == 1.2 +python-gflags == 2.0 diff --git a/ci/requirements-2.7.txt b/ci/requirements-2.7.txt index d6a1e2d362330..2764e740886da 100644 --- a/ci/requirements-2.7.txt +++ b/ci/requirements-2.7.txt @@ -20,4 +20,3 @@ patsy pymysql=0.6.3 html5lib=1.0b2 beautiful-soup=4.2.1 -python-gflags=2.0 diff --git a/ci/requirements-2.7_SLOW.txt b/ci/requirements-2.7_SLOW.txt index 1a56434c62f86..563ce3e1190e6 100644 --- a/ci/requirements-2.7_SLOW.txt +++ b/ci/requirements-2.7_SLOW.txt @@ -20,4 +20,3 @@ psycopg2 pymysql html5lib beautiful-soup -python-gflags diff --git a/pandas/io/tests/test_ga.py b/pandas/io/tests/test_ga.py index cc26411e8d364..13d31b43ac39a 100644 --- a/pandas/io/tests/test_ga.py +++ b/pandas/io/tests/test_ga.py @@ -3,11 +3,14 @@ import nose import pandas as pd -from pandas import DataFrame +from pandas import compat from pandas.util.testing import network, assert_frame_equal, with_connectivity_check from numpy.testing.decorators import slow import pandas.util.testing as tm +if compat.PY3: + raise nose.SkipTest("python-gflags does not support Python 3 yet") + try: import httplib2 import pandas.io.ga as ga @@ -17,6 +20,7 @@ except ImportError: raise nose.SkipTest("need httplib2 and auth libs") + class TestGoogle(tm.TestCase): _multiprocess_can_split_ = True @@ -29,8 +33,7 @@ def test_remove_token_store(self): reset_default_token_store() self.assertFalse(os.path.exists(auth.DEFAULT_TOKEN_FILE)) - @slow - @network + @with_connectivity_check("http://www.google.com") def test_getdata(self): try: end_date = datetime.now() @@ -45,18 +48,19 @@ def test_getdata(self): start_date=start_date, end_date=end_date, dimensions=['date', 'hour'], - parse_dates={'ts': ['date', 'hour']}) - - assert isinstance(df, DataFrame) - assert isinstance(df.index, pd.DatetimeIndex) - assert len(df) > 1 - assert 'date' not in df - assert 'hour' not in df - assert df.index.name == 'ts' - assert 'avgTimeOnSite' in df - assert 'visitors' in df - assert 'newVisits' in df - assert 'pageviewsPerVisit' in df + parse_dates={'ts': ['date', 'hour']}, + index_col=0) + + self.assertIsInstance(df, pd.DataFrame) + self.assertIsInstance(df.index, pd.DatetimeIndex) + self.assertGreater(len(df), 1) + self.assertTrue('date' not in df) + self.assertTrue('hour' not in df) + self.assertEqual(df.index.name, 'ts') + self.assertTrue('avgTimeOnSite' in df) + self.assertTrue('visitors' in df) + self.assertTrue('newVisits' in df) + self.assertTrue('pageviewsPerVisit' in df) df2 = read_ga( metrics=['avgTimeOnSite', 'visitors', 'newVisits', @@ -64,14 +68,14 @@ def test_getdata(self): start_date=start_date, end_date=end_date, dimensions=['date', 'hour'], - parse_dates={'ts': ['date', 'hour']}) + parse_dates={'ts': ['date', 'hour']}, + index_col=0) assert_frame_equal(df, df2) except AuthenticationConfigError: raise nose.SkipTest("authentication error") - @slow @with_connectivity_check("http://www.google.com") def test_iterator(self): try: @@ -81,20 +85,21 @@ def test_iterator(self): metrics='visitors', start_date='2005-1-1', dimensions='date', - max_results=10, chunksize=5) + max_results=10, chunksize=5, + index_col=0) df1 = next(it) df2 = next(it) for df in [df1, df2]: - assert isinstance(df, DataFrame) - assert isinstance(df.index, pd.DatetimeIndex) - assert len(df) == 5 - assert 'date' not in df - assert df.index.name == 'date' - assert 'visitors' in df + self.assertIsInstance(df, pd.DataFrame) + self.assertIsInstance(df.index, pd.DatetimeIndex) + self.assertEqual(len(df), 5) + self.assertTrue('date' not in df) + self.assertEqual(df.index.name, 'date') + self.assertTrue('visitors' in df) - assert (df2.index > df1.index).all() + self.assertTrue((df2.index > df1.index).all()) except AuthenticationConfigError: raise nose.SkipTest("authentication error") @@ -102,30 +107,28 @@ def test_iterator(self): def test_v2_advanced_segment_format(self): advanced_segment_id = 1234567 query = ga.format_query('google_profile_id', ['visits'], '2013-09-01', segment=advanced_segment_id) - assert query['segment'] == 'gaid::' + str(advanced_segment_id), "An integer value should be formatted as an advanced segment." + self.assertEqual(query['segment'], 'gaid::' + str(advanced_segment_id), "An integer value should be formatted as an advanced segment.") def test_v2_dynamic_segment_format(self): dynamic_segment_id = 'medium==referral' query = ga.format_query('google_profile_id', ['visits'], '2013-09-01', segment=dynamic_segment_id) - assert query['segment'] == 'dynamic::ga:' + str(dynamic_segment_id), "A string value with more than just letters and numbers should be formatted as a dynamic segment." + self.assertEqual(query['segment'], 'dynamic::ga:' + str(dynamic_segment_id), "A string value with more than just letters and numbers should be formatted as a dynamic segment.") def test_v3_advanced_segment_common_format(self): advanced_segment_id = 'aZwqR234' query = ga.format_query('google_profile_id', ['visits'], '2013-09-01', segment=advanced_segment_id) - assert query['segment'] == 'gaid::' + str(advanced_segment_id), "A string value with just letters and numbers should be formatted as an advanced segment." + self.assertEqual(query['segment'], 'gaid::' + str(advanced_segment_id), "A string value with just letters and numbers should be formatted as an advanced segment.") def test_v3_advanced_segment_weird_format(self): advanced_segment_id = '_aZwqR234-s1' query = ga.format_query('google_profile_id', ['visits'], '2013-09-01', segment=advanced_segment_id) - assert query['segment'] == 'gaid::' + str(advanced_segment_id), "A string value with just letters, numbers, and hyphens should be formatted as an advanced segment." + self.assertEqual(query['segment'], 'gaid::' + str(advanced_segment_id), "A string value with just letters, numbers, and hyphens should be formatted as an advanced segment.") def test_v3_advanced_segment_with_underscore_format(self): advanced_segment_id = 'aZwqR234_s1' query = ga.format_query('google_profile_id', ['visits'], '2013-09-01', segment=advanced_segment_id) - assert query['segment'] == 'gaid::' + str(advanced_segment_id), "A string value with just letters, numbers, and underscores should be formatted as an advanced segment." - + self.assertEqual(query['segment'], 'gaid::' + str(advanced_segment_id), "A string value with just letters, numbers, and underscores should be formatted as an advanced segment.") - @slow @with_connectivity_check("http://www.google.com") def test_segment(self): try: @@ -142,20 +145,21 @@ def test_segment(self): end_date=end_date, segment=-2, dimensions=['date', 'hour'], - parse_dates={'ts': ['date', 'hour']}) - - assert isinstance(df, DataFrame) - assert isinstance(df.index, pd.DatetimeIndex) - assert len(df) > 1 - assert 'date' not in df - assert 'hour' not in df - assert df.index.name == 'ts' - assert 'avgTimeOnSite' in df - assert 'visitors' in df - assert 'newVisits' in df - assert 'pageviewsPerVisit' in df - - #dynamic + parse_dates={'ts': ['date', 'hour']}, + index_col=0) + + self.assertIsInstance(df, pd.DataFrame) + self.assertIsInstance(df.index, pd.DatetimeIndex) + self.assertGreater(len(df), 1) + self.assertTrue('date' not in df) + self.assertTrue('hour' not in df) + self.assertEqual(df.index.name, 'ts') + self.assertTrue('avgTimeOnSite' in df) + self.assertTrue('visitors' in df) + self.assertTrue('newVisits' in df) + self.assertTrue('pageviewsPerVisit' in df) + + # dynamic df = read_ga( metrics=['avgTimeOnSite', 'visitors', 'newVisits', 'pageviewsPerVisit'], @@ -163,18 +167,19 @@ def test_segment(self): end_date=end_date, segment="source=~twitter", dimensions=['date', 'hour'], - parse_dates={'ts': ['date', 'hour']}) + parse_dates={'ts': ['date', 'hour']}, + index_col=0) - assert isinstance(df, DataFrame) + assert isinstance(df, pd.DataFrame) assert isinstance(df.index, pd.DatetimeIndex) - assert len(df) > 1 - assert 'date' not in df - assert 'hour' not in df - assert df.index.name == 'ts' - assert 'avgTimeOnSite' in df - assert 'visitors' in df - assert 'newVisits' in df - assert 'pageviewsPerVisit' in df + self.assertGreater(len(df), 1) + self.assertTrue('date' not in df) + self.assertTrue('hour' not in df) + self.assertEqual(df.index.name, 'ts') + self.assertTrue('avgTimeOnSite' in df) + self.assertTrue('visitors' in df) + self.assertTrue('newVisits' in df) + self.assertTrue('pageviewsPerVisit' in df) except AuthenticationConfigError: raise nose.SkipTest("authentication error")