PageRenderTime 47ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/pandas/io/tests/test_ga.py

https://github.com/thouis/pandas
Python | 116 lines | 98 code | 18 blank | 0 comment | 16 complexity | 9b01da1abd7981972beb2a4274bfb10d MD5 | raw file
Possible License(s): BSD-3-Clause
  1. import unittest
  2. import nose
  3. from datetime import datetime
  4. import pandas as pd
  5. import pandas.core.common as com
  6. from pandas import DataFrame
  7. from pandas.util.testing import network, assert_frame_equal
  8. from numpy.testing.decorators import slow
  9. class TestGoogle(unittest.TestCase):
  10. _multiprocess_can_split_ = True
  11. @slow
  12. @network
  13. def test_getdata(self):
  14. try:
  15. import httplib2
  16. from pandas.io.ga import GAnalytics, read_ga
  17. from pandas.io.auth import AuthenticationConfigError
  18. except ImportError:
  19. raise nose.SkipTest
  20. try:
  21. end_date = datetime.now()
  22. start_date = end_date - pd.offsets.Day() * 5
  23. end_date = end_date.strftime('%Y-%m-%d')
  24. start_date = start_date.strftime('%Y-%m-%d')
  25. reader = GAnalytics()
  26. df = reader.get_data(
  27. metrics=['avgTimeOnSite', 'visitors', 'newVisits',
  28. 'pageviewsPerVisit'],
  29. start_date = start_date,
  30. end_date = end_date,
  31. dimensions=['date', 'hour'],
  32. parse_dates={'ts' : ['date', 'hour']})
  33. assert isinstance(df, DataFrame)
  34. assert isinstance(df.index, pd.DatetimeIndex)
  35. assert len(df) > 1
  36. assert 'date' not in df
  37. assert 'hour' not in df
  38. assert df.index.name == 'ts'
  39. assert 'avgTimeOnSite' in df
  40. assert 'visitors' in df
  41. assert 'newVisits' in df
  42. assert 'pageviewsPerVisit' in df
  43. df2 = read_ga(
  44. metrics=['avgTimeOnSite', 'visitors', 'newVisits',
  45. 'pageviewsPerVisit'],
  46. start_date=start_date,
  47. end_date=end_date,
  48. dimensions=['date', 'hour'],
  49. parse_dates={'ts' : ['date', 'hour']})
  50. assert_frame_equal(df, df2)
  51. except AuthenticationConfigError:
  52. raise nose.SkipTest
  53. except httplib2.ServerNotFoundError:
  54. try:
  55. h = httplib2.Http()
  56. response, content = h.request("http://www.google.com")
  57. raise
  58. except httplib2.ServerNotFoundError:
  59. raise nose.SkipTest
  60. @slow
  61. @network
  62. def test_iterator(self):
  63. try:
  64. import httplib2
  65. from pandas.io.ga import GAnalytics, read_ga
  66. from pandas.io.auth import AuthenticationConfigError
  67. except ImportError:
  68. raise nose.SkipTest
  69. try:
  70. reader = GAnalytics()
  71. it = reader.get_data(
  72. metrics='visitors',
  73. start_date='2005-1-1',
  74. dimensions='date',
  75. max_results=10, chunksize=5)
  76. df1 = it.next()
  77. df2 = it.next()
  78. for df in [df1, df2]:
  79. assert isinstance(df, DataFrame)
  80. assert isinstance(df.index, pd.DatetimeIndex)
  81. assert len(df) == 5
  82. assert 'date' not in df
  83. assert df.index.name == 'date'
  84. assert 'visitors' in df
  85. assert (df2.index > df1.index).all()
  86. except AuthenticationConfigError:
  87. raise nose.SkipTest
  88. except httplib2.ServerNotFoundError:
  89. try:
  90. h = httplib2.Http()
  91. response, content = h.request("http://www.google.com")
  92. raise
  93. except httplib2.ServerNotFoundError:
  94. raise nose.SkipTest
  95. if __name__ == '__main__':
  96. import nose
  97. nose.runmodule(argv=[__file__,'-vvs','-x','--pdb', '--pdb-failure'],
  98. exit=False)