Skip to content

Commit fd7d40a

Browse files
partheaNick Eubank
authored and
Nick Eubank
committed
TST: Fix skipped unit tests in test_ga. Install python-gflags using pip. pandas-dev#11090
1 parent 295e2d7 commit fd7d40a

File tree

4 files changed

+62
-58
lines changed

4 files changed

+62
-58
lines changed

ci/requirements-2.7.pip

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
blosc
22
httplib2
33
google-api-python-client == 1.2
4+
python-gflags == 2.0

ci/requirements-2.7.txt

-1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,3 @@ patsy
2020
pymysql=0.6.3
2121
html5lib=1.0b2
2222
beautiful-soup=4.2.1
23-
python-gflags=2.0

ci/requirements-2.7_SLOW.txt

-1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,3 @@ psycopg2
2020
pymysql
2121
html5lib
2222
beautiful-soup
23-
python-gflags

pandas/io/tests/test_ga.py

+61-56
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33

44
import nose
55
import pandas as pd
6-
from pandas import DataFrame
6+
from pandas import compat
77
from pandas.util.testing import network, assert_frame_equal, with_connectivity_check
88
from numpy.testing.decorators import slow
99
import pandas.util.testing as tm
1010

11+
if compat.PY3:
12+
raise nose.SkipTest("python-gflags does not support Python 3 yet")
13+
1114
try:
1215
import httplib2
1316
import pandas.io.ga as ga
@@ -17,6 +20,7 @@
1720
except ImportError:
1821
raise nose.SkipTest("need httplib2 and auth libs")
1922

23+
2024
class TestGoogle(tm.TestCase):
2125

2226
_multiprocess_can_split_ = True
@@ -29,8 +33,7 @@ def test_remove_token_store(self):
2933
reset_default_token_store()
3034
self.assertFalse(os.path.exists(auth.DEFAULT_TOKEN_FILE))
3135

32-
@slow
33-
@network
36+
@with_connectivity_check("http://www.google.com")
3437
def test_getdata(self):
3538
try:
3639
end_date = datetime.now()
@@ -45,33 +48,34 @@ def test_getdata(self):
4548
start_date=start_date,
4649
end_date=end_date,
4750
dimensions=['date', 'hour'],
48-
parse_dates={'ts': ['date', 'hour']})
49-
50-
assert isinstance(df, DataFrame)
51-
assert isinstance(df.index, pd.DatetimeIndex)
52-
assert len(df) > 1
53-
assert 'date' not in df
54-
assert 'hour' not in df
55-
assert df.index.name == 'ts'
56-
assert 'avgTimeOnSite' in df
57-
assert 'visitors' in df
58-
assert 'newVisits' in df
59-
assert 'pageviewsPerVisit' in df
51+
parse_dates={'ts': ['date', 'hour']},
52+
index_col=0)
53+
54+
self.assertIsInstance(df, pd.DataFrame)
55+
self.assertIsInstance(df.index, pd.DatetimeIndex)
56+
self.assertGreater(len(df), 1)
57+
self.assertTrue('date' not in df)
58+
self.assertTrue('hour' not in df)
59+
self.assertEqual(df.index.name, 'ts')
60+
self.assertTrue('avgTimeOnSite' in df)
61+
self.assertTrue('visitors' in df)
62+
self.assertTrue('newVisits' in df)
63+
self.assertTrue('pageviewsPerVisit' in df)
6064

6165
df2 = read_ga(
6266
metrics=['avgTimeOnSite', 'visitors', 'newVisits',
6367
'pageviewsPerVisit'],
6468
start_date=start_date,
6569
end_date=end_date,
6670
dimensions=['date', 'hour'],
67-
parse_dates={'ts': ['date', 'hour']})
71+
parse_dates={'ts': ['date', 'hour']},
72+
index_col=0)
6873

6974
assert_frame_equal(df, df2)
7075

7176
except AuthenticationConfigError:
7277
raise nose.SkipTest("authentication error")
7378

74-
@slow
7579
@with_connectivity_check("http://www.google.com")
7680
def test_iterator(self):
7781
try:
@@ -81,51 +85,50 @@ def test_iterator(self):
8185
metrics='visitors',
8286
start_date='2005-1-1',
8387
dimensions='date',
84-
max_results=10, chunksize=5)
88+
max_results=10, chunksize=5,
89+
index_col=0)
8590

8691
df1 = next(it)
8792
df2 = next(it)
8893

8994
for df in [df1, df2]:
90-
assert isinstance(df, DataFrame)
91-
assert isinstance(df.index, pd.DatetimeIndex)
92-
assert len(df) == 5
93-
assert 'date' not in df
94-
assert df.index.name == 'date'
95-
assert 'visitors' in df
95+
self.assertIsInstance(df, pd.DataFrame)
96+
self.assertIsInstance(df.index, pd.DatetimeIndex)
97+
self.assertEqual(len(df), 5)
98+
self.assertTrue('date' not in df)
99+
self.assertEqual(df.index.name, 'date')
100+
self.assertTrue('visitors' in df)
96101

97-
assert (df2.index > df1.index).all()
102+
self.assertTrue((df2.index > df1.index).all())
98103

99104
except AuthenticationConfigError:
100105
raise nose.SkipTest("authentication error")
101106

102107
def test_v2_advanced_segment_format(self):
103108
advanced_segment_id = 1234567
104109
query = ga.format_query('google_profile_id', ['visits'], '2013-09-01', segment=advanced_segment_id)
105-
assert query['segment'] == 'gaid::' + str(advanced_segment_id), "An integer value should be formatted as an advanced segment."
110+
self.assertEqual(query['segment'], 'gaid::' + str(advanced_segment_id), "An integer value should be formatted as an advanced segment.")
106111

107112
def test_v2_dynamic_segment_format(self):
108113
dynamic_segment_id = 'medium==referral'
109114
query = ga.format_query('google_profile_id', ['visits'], '2013-09-01', segment=dynamic_segment_id)
110-
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."
115+
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.")
111116

112117
def test_v3_advanced_segment_common_format(self):
113118
advanced_segment_id = 'aZwqR234'
114119
query = ga.format_query('google_profile_id', ['visits'], '2013-09-01', segment=advanced_segment_id)
115-
assert query['segment'] == 'gaid::' + str(advanced_segment_id), "A string value with just letters and numbers should be formatted as an advanced segment."
120+
self.assertEqual(query['segment'], 'gaid::' + str(advanced_segment_id), "A string value with just letters and numbers should be formatted as an advanced segment.")
116121

117122
def test_v3_advanced_segment_weird_format(self):
118123
advanced_segment_id = '_aZwqR234-s1'
119124
query = ga.format_query('google_profile_id', ['visits'], '2013-09-01', segment=advanced_segment_id)
120-
assert query['segment'] == 'gaid::' + str(advanced_segment_id), "A string value with just letters, numbers, and hyphens should be formatted as an advanced segment."
125+
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.")
121126

122127
def test_v3_advanced_segment_with_underscore_format(self):
123128
advanced_segment_id = 'aZwqR234_s1'
124129
query = ga.format_query('google_profile_id', ['visits'], '2013-09-01', segment=advanced_segment_id)
125-
assert query['segment'] == 'gaid::' + str(advanced_segment_id), "A string value with just letters, numbers, and underscores should be formatted as an advanced segment."
126-
130+
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.")
127131

128-
@slow
129132
@with_connectivity_check("http://www.google.com")
130133
def test_segment(self):
131134
try:
@@ -142,39 +145,41 @@ def test_segment(self):
142145
end_date=end_date,
143146
segment=-2,
144147
dimensions=['date', 'hour'],
145-
parse_dates={'ts': ['date', 'hour']})
146-
147-
assert isinstance(df, DataFrame)
148-
assert isinstance(df.index, pd.DatetimeIndex)
149-
assert len(df) > 1
150-
assert 'date' not in df
151-
assert 'hour' not in df
152-
assert df.index.name == 'ts'
153-
assert 'avgTimeOnSite' in df
154-
assert 'visitors' in df
155-
assert 'newVisits' in df
156-
assert 'pageviewsPerVisit' in df
157-
158-
#dynamic
148+
parse_dates={'ts': ['date', 'hour']},
149+
index_col=0)
150+
151+
self.assertIsInstance(df, pd.DataFrame)
152+
self.assertIsInstance(df.index, pd.DatetimeIndex)
153+
self.assertGreater(len(df), 1)
154+
self.assertTrue('date' not in df)
155+
self.assertTrue('hour' not in df)
156+
self.assertEqual(df.index.name, 'ts')
157+
self.assertTrue('avgTimeOnSite' in df)
158+
self.assertTrue('visitors' in df)
159+
self.assertTrue('newVisits' in df)
160+
self.assertTrue('pageviewsPerVisit' in df)
161+
162+
# dynamic
159163
df = read_ga(
160164
metrics=['avgTimeOnSite', 'visitors', 'newVisits',
161165
'pageviewsPerVisit'],
162166
start_date=start_date,
163167
end_date=end_date,
164168
segment="source=~twitter",
165169
dimensions=['date', 'hour'],
166-
parse_dates={'ts': ['date', 'hour']})
170+
parse_dates={'ts': ['date', 'hour']},
171+
index_col=0)
167172

168-
assert isinstance(df, DataFrame)
173+
assert isinstance(df, pd.DataFrame)
169174
assert isinstance(df.index, pd.DatetimeIndex)
170-
assert len(df) > 1
171-
assert 'date' not in df
172-
assert 'hour' not in df
173-
assert df.index.name == 'ts'
174-
assert 'avgTimeOnSite' in df
175-
assert 'visitors' in df
176-
assert 'newVisits' in df
177-
assert 'pageviewsPerVisit' in df
175+
self.assertGreater(len(df), 1)
176+
self.assertTrue('date' not in df)
177+
self.assertTrue('hour' not in df)
178+
self.assertEqual(df.index.name, 'ts')
179+
self.assertTrue('avgTimeOnSite' in df)
180+
self.assertTrue('visitors' in df)
181+
self.assertTrue('newVisits' in df)
182+
self.assertTrue('pageviewsPerVisit' in df)
178183

179184
except AuthenticationConfigError:
180185
raise nose.SkipTest("authentication error")

0 commit comments

Comments
 (0)