Skip to content

Commit d97ec8e

Browse files
author
TomAugspurger
committed
Adding some tests to cover the FRED data fetching code.
This a very minimal, but it wasn't previously covered. I've added a new to contain the tests and more or less copied code from the test_yahoo file.
1 parent ea40325 commit d97ec8e

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

pandas/io/tests/test_fred.py

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import unittest
2+
import nose
3+
from datetime import datetime
4+
5+
from pandas.util.py3compat import StringIO, BytesIO
6+
7+
import pandas as pd
8+
import pandas.io.data as web
9+
from pandas.util.testing import (network, assert_frame_equal,
10+
assert_series_equal,
11+
assert_almost_equal)
12+
from numpy.testing.decorators import slow
13+
14+
import urllib2
15+
16+
17+
class TestFred(unittest.TestCase):
18+
19+
@slow
20+
@network
21+
def test_fred(self):
22+
"""
23+
Throws an exception when DataReader can't get a 200 response from
24+
FRED.
25+
"""
26+
start = datetime(2010, 1, 1)
27+
end = datetime(2013, 01, 27)
28+
29+
try:
30+
self.assertEquals(
31+
web.DataReader("GDP", "fred", start, end)['GDP'].tail(1),
32+
16010.2)
33+
34+
self.assertRaises(
35+
Exception,
36+
lambda: web.DataReader("NON EXISTENT SERIES", 'fred',
37+
start, end))
38+
except urllib2.URLError:
39+
try:
40+
urllib2.urlopen('http://google.com')
41+
except urllib2.URLError:
42+
raise nose.SkipTest
43+
else:
44+
raise
45+
46+
@slow
47+
@network
48+
def test_fred_nan(self):
49+
start = datetime(2010, 1, 1)
50+
end = datetime(2013, 01, 27)
51+
df = web.DataReader("DFII5", "fred", start, end)
52+
assert pd.isnull(df.ix['2010-01-01'])
53+
54+
@slow
55+
@network
56+
def test_fred_parts(self):
57+
import numpy as np
58+
59+
start = datetime(2010, 1, 1)
60+
end = datetime(2013, 01, 27)
61+
df = web.get_data_fred("CPIAUCSL", start, end)
62+
assert df.ix['2010-05-01'] == 217.23
63+
64+
t = np.array(df.CPIAUCSL.tolist())
65+
assert np.issubdtype(t.dtype, np.floating)
66+
assert t.shape == (37,)
67+
68+
# Test some older ones:
69+
expected = [[576.7],
70+
[962.9],
71+
[684.7],
72+
[848.3],
73+
[933.3]]
74+
result = web.get_data_fred("A09024USA144NNBR", start="1915").ix[:5]
75+
assert (result.values == expected).all()
76+
77+
if __name__ == '__main__':
78+
nose.runmodule(argv=[__file__, '-vvs', '-x', '--pdb', '--pdb-failure'],
79+
exit=False)

0 commit comments

Comments
 (0)