-
Notifications
You must be signed in to change notification settings - Fork 680
/
Copy pathtest_tiingo.py
92 lines (68 loc) · 2.53 KB
/
test_tiingo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import os
import pandas as pd
import pytest
from pandas_datareader.tiingo import (
TiingoDailyReader,
TiingoIEXHistoricalReader,
TiingoMetaDataReader,
TiingoQuoteReader,
get_tiingo_symbols,
)
pytestmark = pytest.mark.requires_api_key
TEST_API_KEY = os.getenv("TIINGO_API_KEY")
# Ensure blank TEST_API_KEY not used in pull request
TEST_API_KEY = None if not TEST_API_KEY else TEST_API_KEY
syms = ["GOOG", ["GOOG", "XOM"]]
ids = list(map(str, syms))
@pytest.fixture(params=syms, ids=ids)
def symbols(request):
return request.param
formats = ["csv", "json"]
format_ids = list(map(str, formats))
@pytest.fixture(params=formats, ids=format_ids)
def formats(request):
return request.param
@pytest.mark.skipif(TEST_API_KEY is None, reason="TIINGO_API_KEY not set")
def test_tiingo_quote(symbols, formats):
df = TiingoQuoteReader(symbols=symbols, response_format=formats).read()
assert isinstance(df, pd.DataFrame)
if isinstance(symbols, str):
symbols = [symbols]
assert df.shape[0] == len(symbols)
@pytest.mark.skipif(TEST_API_KEY is None, reason="TIINGO_API_KEY not set")
def test_tiingo_historical(symbols, formats):
df = TiingoDailyReader(symbols=symbols, response_format=formats).read()
assert isinstance(df, pd.DataFrame)
if isinstance(symbols, str):
symbols = [symbols]
assert df.index.levels[0].shape[0] == len(symbols)
@pytest.mark.skipif(TEST_API_KEY is None, reason="TIINGO_API_KEY not set")
def test_tiingo_iex_historical(symbols, formats):
df = TiingoIEXHistoricalReader(symbols=symbols, response_format=formats).read()
df.head()
assert isinstance(df, pd.DataFrame)
if isinstance(symbols, str):
symbols = [symbols]
assert df.index.levels[0].shape[0] == len(symbols)
@pytest.mark.skipif(TEST_API_KEY is None, reason="TIINGO_API_KEY not set")
def test_tiingo_metadata(symbols):
df = TiingoMetaDataReader(symbols=symbols).read()
assert isinstance(df, pd.DataFrame)
if isinstance(symbols, str):
symbols = [symbols]
assert df.shape[1] == len(symbols)
def test_tiingo_no_api_key(symbols):
from test.support import EnvironmentVarGuard
env = EnvironmentVarGuard()
env.unset("TIINGO_API_KEY")
with env:
with pytest.raises(ValueError):
TiingoMetaDataReader(symbols=symbols)
@pytest.mark.skipif(
pd.__version__ == "0.19.2",
reason="pandas 0.19.2 does not like\
this file format",
)
def test_tiingo_stock_symbols():
sym = get_tiingo_symbols()
assert isinstance(sym, pd.DataFrame)