Skip to content

Commit 1b29e04

Browse files
committed
Refactor tests for pytest
1 parent 7c5d026 commit 1b29e04

File tree

4 files changed

+75
-80
lines changed

4 files changed

+75
-80
lines changed

tests/test_abstract.py

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
import numpy as np
2-
from nose.tools import (
3-
assert_equals,
4-
assert_true,
5-
assert_false,
6-
assert_raises,
7-
)
2+
import pytest
83

94
try:
105
from collections import OrderedDict
@@ -14,7 +9,7 @@
149
import talib
1510
from talib import func
1611
from talib import abstract
17-
from talib.test_data import ford_2012, assert_np_arrays_equal, assert_np_arrays_not_equal
12+
from test_data import ford_2012, assert_np_arrays_equal, assert_np_arrays_not_equal
1813

1914

2015
def test_pandas():
@@ -24,20 +19,20 @@ def test_pandas():
2419

2520
expected_k, expected_d = func.STOCH(ford_2012['high'], ford_2012['low'], ford_2012['close']) # 5, 3, 0, 3, 0
2621
output = abstract.Function('stoch', input_df).outputs
27-
assert_true(isinstance(output, pandas.DataFrame))
22+
assert isinstance(output, pandas.DataFrame)
2823
assert_np_arrays_equal(expected_k, output['slowk'])
2924
assert_np_arrays_equal(expected_d, output['slowd'])
3025
output = abstract.Function('stoch', input_dict).outputs
31-
assert_true(isinstance(output, list))
26+
assert isinstance(output, list)
3227
assert_np_arrays_equal(expected_k, output[0])
3328
assert_np_arrays_equal(expected_d, output[1])
3429

3530
expected = func.SMA(ford_2012['close'], 10)
3631
output = abstract.Function('sma', input_df, 10).outputs
37-
assert_true(isinstance(output, pandas.Series))
32+
assert isinstance(output, pandas.Series)
3833
assert_np_arrays_equal(expected, output)
3934
output = abstract.Function('sma', input_dict, 10).outputs
40-
assert_true(isinstance(output, np.ndarray))
35+
assert isinstance(output, np.ndarray)
4136
assert_np_arrays_equal(expected, output)
4237

4338

@@ -86,12 +81,13 @@ def test_doji_candle():
8681

8782
def test_MAVP():
8883
mavp = abstract.MAVP
89-
assert_raises(Exception, mavp.set_input_arrays, ford_2012)
84+
with pytest.raises(Exception):
85+
mavp.set_input_arrays(ford_2012)
9086
input_d = {}
9187
input_d['close'] = ford_2012['close']
9288
input_d['periods'] = np.arange(30)
93-
assert_true(mavp.set_input_arrays(input_d))
94-
assert_equals(mavp.input_arrays, input_d)
89+
assert mavp.set_input_arrays(input_d)
90+
assert mavp.input_arrays == input_d
9591

9692
def test_info():
9793
stochrsi = abstract.Function('STOCHRSI')
@@ -115,7 +111,7 @@ def test_info():
115111
('fastd_matype', 1),
116112
]),
117113
}
118-
assert_equals(expected, stochrsi.info)
114+
assert expected == stochrsi.info
119115

120116
expected = {
121117
'display_name': 'Bollinger Bands',
@@ -136,11 +132,11 @@ def test_info():
136132
('matype', 0),
137133
]),
138134
}
139-
assert_equals(expected, abstract.Function('BBANDS').info)
135+
assert expected == abstract.Function('BBANDS').info
140136

141137
def test_input_names():
142138
expected = OrderedDict([('price', 'close')])
143-
assert_equals(expected, abstract.Function('MAMA').input_names)
139+
assert expected == abstract.Function('MAMA').input_names
144140

145141
# test setting input_names
146142
obv = abstract.Function('OBV')
@@ -149,13 +145,13 @@ def test_input_names():
149145
('prices', ['volume']),
150146
])
151147
obv.input_names = expected
152-
assert_equals(obv.input_names, expected)
148+
assert obv.input_names == expected
153149

154150
obv.input_names = {
155151
'price': 'open',
156152
'prices': ['volume'],
157153
}
158-
assert_equals(obv.input_names, expected)
154+
assert obv.input_names == expected
159155

160156
def test_input_arrays():
161157
mama = abstract.Function('MAMA')
@@ -167,33 +163,34 @@ def test_input_arrays():
167163
'close': None,
168164
'volume': None,
169165
}
170-
assert_equals(expected, mama.get_input_arrays())
166+
assert expected == mama.get_input_arrays()
171167
# test setting/getting input_arrays
172-
assert_true(mama.set_input_arrays(ford_2012))
173-
assert_equals(mama.get_input_arrays(), ford_2012)
174-
assert_raises(Exception,
175-
mama.set_input_arrays, {'hello': 'fail', 'world': 'bye'})
168+
assert mama.set_input_arrays(ford_2012)
169+
assert mama.get_input_arrays() == ford_2012
170+
with pytest.raises(Exception):
171+
mama.set_input_arrays({'hello': 'fail', 'world': 'bye'})
176172

177173
# test only required keys are needed
178174
willr = abstract.Function('WILLR')
179175
reqd = willr.input_names['prices']
180176
input_d = dict([(key, ford_2012[key]) for key in reqd])
181-
assert_true(willr.set_input_arrays(input_d))
182-
assert_equals(willr.input_arrays, input_d)
177+
assert willr.set_input_arrays(input_d)
178+
assert willr.input_arrays == input_d
183179

184180
# test extraneous keys are ignored
185181
input_d['extra_stuffs'] = 'you should never see me'
186182
input_d['date'] = np.random.rand(100)
187-
assert_true(willr.set_input_arrays(input_d))
183+
assert willr.set_input_arrays(input_d)
188184

189185
# test missing keys get detected
190186
input_d['open'] = ford_2012['open']
191187
input_d.pop('close')
192-
assert_raises(Exception, willr.set_input_arrays, input_d)
188+
with pytest.raises(Exception):
189+
willr.set_input_arrays(input_d)
193190

194191
# test changing input_names on the Function
195192
willr.input_names = {'prices': ['high', 'low', 'open']}
196-
assert_true(willr.set_input_arrays(input_d))
193+
assert willr.set_input_arrays(input_d)
197194

198195
def test_parameters():
199196
stoch = abstract.Function('STOCH')
@@ -204,31 +201,31 @@ def test_parameters():
204201
('slowd_period', 3),
205202
('slowd_matype', 0),
206203
])
207-
assert_equals(expected, stoch.parameters)
204+
assert expected == stoch.parameters
208205

209206
stoch.parameters = {'fastk_period': 10}
210207
expected['fastk_period'] = 10
211-
assert_equals(expected, stoch.parameters)
208+
assert expected == stoch.parameters
212209

213210
stoch.parameters = {'slowk_period': 8, 'slowd_period': 5}
214211
expected['slowk_period'] = 8
215212
expected['slowd_period'] = 5
216-
assert_equals(expected, stoch.parameters)
213+
assert expected == stoch.parameters
217214

218215
stoch.parameters = {'slowd_matype': talib.MA_Type.T3}
219216
expected['slowd_matype'] = 8
220-
assert_equals(expected, stoch.parameters)
217+
assert expected == stoch.parameters
221218

222219
stoch.parameters = {
223220
'slowk_matype': talib.MA_Type.WMA,
224221
'slowd_matype': talib.MA_Type.EMA,
225222
}
226223
expected['slowk_matype'] = 2
227224
expected['slowd_matype'] = 1
228-
assert_equals(expected, stoch.parameters)
225+
assert expected == stoch.parameters
229226

230227
def test_lookback():
231-
assert_equals(abstract.Function('SMA', 10).lookback, 9)
228+
assert abstract.Function('SMA', 10).lookback == 9
232229

233230
stochrsi = abstract.Function('stochrsi', 20, 5, 3)
234-
assert_equals(stochrsi.lookback, 26)
231+
assert stochrsi.lookback == 26

tests/test_data.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import numpy as np
55

6-
from nose.tools import assert_equal, assert_not_equal, assert_true
76

87
ford_2012_dates = np.asarray([ 20120103, 20120104, 20120105, 20120106, 20120109,
98
20120110, 20120111, 20120112, 20120113, 20120117, 20120118, 20120119,
@@ -217,9 +216,9 @@
217216
def assert_np_arrays_equal(expected, got):
218217
for i, value in enumerate(expected):
219218
if np.isnan(value):
220-
assert_true(np.isnan(got[i]))
219+
assert np.isnan(got[i])
221220
else:
222-
assert_equal(value, got[i])
221+
assert value == got[i]
223222

224223
def assert_np_arrays_not_equal(expected, got):
225224
''' Verifies expected and got have the same number of leading nan fields,
@@ -229,11 +228,11 @@ def assert_np_arrays_not_equal(expected, got):
229228
equals = []
230229
for i, value in enumerate(expected):
231230
if np.isnan(value):
232-
assert_true(np.isnan(got[i]))
231+
assert np.isnan(got[i])
233232
nans.append(value)
234233
else:
235234
try:
236-
assert_not_equal(value, got[i])
235+
assert value != got[i]
237236
except AssertionError:
238237
equals.append(got[i])
239238
if len(equals) == len(expected[len(nans):]):

tests/test_func.py

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
import numpy as np
2-
from nose.tools import assert_equals, assert_true, assert_raises
2+
import pytest
33

44
import talib
55
from talib import func
6-
from talib.test_data import series, assert_np_arrays_equal, assert_np_arrays_not_equal
6+
from test_data import series, assert_np_arrays_equal, assert_np_arrays_not_equal
77

88
def test_input_lengths():
99
a1 = np.arange(10, dtype=float)
1010
a2 = np.arange(11, dtype=float)
11-
with assert_raises(Exception):
11+
with pytest.raises(Exception):
1212
func.BOP(a2, a1, a1, a1)
13-
with assert_raises(Exception):
13+
with pytest.raises(Exception):
1414
func.BOP(a1, a2, a1, a1)
15-
with assert_raises(Exception):
15+
with pytest.raises(Exception):
1616
func.BOP(a1, a1, a2, a1)
17-
with assert_raises(Exception):
17+
with pytest.raises(Exception):
1818
func.BOP(a1, a1, a1, a2)
1919

2020
def test_input_nans():
@@ -41,23 +41,23 @@ def test_unstable_period():
4141
def test_MIN():
4242
result = func.MIN(series, timeperiod=4)
4343
i = np.where(~np.isnan(result))[0][0]
44-
assert_equals(len(series), len(result))
45-
assert_equals(result[i + 1], 93.780)
46-
assert_equals(result[i + 2], 93.780)
47-
assert_equals(result[i + 3], 92.530)
48-
assert_equals(result[i + 4], 92.530)
44+
assert len(series) == len(result)
45+
assert result[i + 1] == 93.780
46+
assert result[i + 2] == 93.780
47+
assert result[i + 3] == 92.530
48+
assert result[i + 4] == 92.530
4949
values = np.array([np.nan, 5., 4., 3., 5., 7.])
5050
result = func.MIN(values, timeperiod=2)
5151
assert_np_arrays_equal(result, [np.nan, np.nan, 4, 3, 3, 5])
5252

5353
def test_MAX():
5454
result = func.MAX(series, timeperiod=4)
5555
i = np.where(~np.isnan(result))[0][0]
56-
assert_equals(len(series), len(result))
57-
assert_equals(result[i + 2], 95.090)
58-
assert_equals(result[i + 3], 95.090)
59-
assert_equals(result[i + 4], 94.620)
60-
assert_equals(result[i + 5], 94.620)
56+
assert len(series) == len(result)
57+
assert result[i + 2] == 95.090
58+
assert result[i + 3] == 95.090
59+
assert result[i + 4] == 94.620
60+
assert result[i + 5] == 94.620
6161

6262
def test_MOM():
6363
values = np.array([90.0,88.0,89.0])
@@ -75,29 +75,29 @@ def test_BBANDS():
7575
nbdevup=2.0, nbdevdn=2.0,
7676
matype=talib.MA_Type.EMA)
7777
i = np.where(~np.isnan(upper))[0][0]
78-
assert_true(len(upper) == len(middle) == len(lower) == len(series))
79-
#assert_true(abs(upper[i + 0] - 98.0734) < 1e-3)
80-
assert_true(abs(middle[i + 0] - 92.8910) < 1e-3)
81-
assert_true(abs(lower[i + 0] - 87.7086) < 1e-3)
82-
#assert_true(abs(upper[i + 13] - 93.674) < 1e-3)
83-
assert_true(abs(middle[i + 13] - 87.679) < 1e-3)
84-
assert_true(abs(lower[i + 13] - 81.685) < 1e-3)
78+
assert len(upper) == len(middle) == len(lower) == len(series)
79+
# assert abs(upper[i + 0] - 98.0734) < 1e-3
80+
assert abs(middle[i + 0] - 92.8910) < 1e-3
81+
assert abs(lower[i + 0] - 87.7086) < 1e-3
82+
# assert abs(upper[i + 13] - 93.674) < 1e-3
83+
assert abs(middle[i + 13] - 87.679) < 1e-3
84+
assert abs(lower[i + 13] - 81.685) < 1e-3
8585

8686
def test_DEMA():
8787
result = func.DEMA(series)
8888
i = np.where(~np.isnan(result))[0][0]
89-
assert_true(len(series) == len(result))
90-
assert_true(abs(result[i + 1] - 86.765) < 1e-3)
91-
assert_true(abs(result[i + 2] - 86.942) < 1e-3)
92-
assert_true(abs(result[i + 3] - 87.089) < 1e-3)
93-
assert_true(abs(result[i + 4] - 87.656) < 1e-3)
89+
assert len(series) == len(result)
90+
assert abs(result[i + 1] - 86.765) < 1e-3
91+
assert abs(result[i + 2] - 86.942) < 1e-3
92+
assert abs(result[i + 3] - 87.089) < 1e-3
93+
assert abs(result[i + 4] - 87.656) < 1e-3
9494

9595
def test_EMAEMA():
9696
result = func.EMA(series, timeperiod=2)
9797
result = func.EMA(result, timeperiod=2)
9898
i = np.where(~np.isnan(result))[0][0]
99-
assert_true(len(series) == len(result))
100-
assert_equals(i, 2)
99+
assert len(series) == len(result)
100+
assert i == 2
101101

102102
def test_CDL3BLACKCROWS():
103103
o = np.array([39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 40.32, 40.51, 38.09, 35.00, 27.66, 30.80])

tests/test_stream.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,24 @@
11
import numpy as np
2-
from nose.tools import assert_equals, assert_true, assert_raises
32

43
import talib
54
from talib import stream
65

76
def test_streaming():
87
a = np.array([1,1,2,3,5,8,13], dtype=float)
98
r = stream.MOM(a, timeperiod=1)
10-
assert_equals(r, 5)
9+
assert r == 5
1110
r = stream.MOM(a, timeperiod=2)
12-
assert_equals(r, 8)
11+
assert r == 8
1312
r = stream.MOM(a, timeperiod=3)
14-
assert_equals(r, 10)
13+
assert r == 10
1514
r = stream.MOM(a, timeperiod=4)
16-
assert_equals(r, 11)
15+
assert r == 11
1716
r = stream.MOM(a, timeperiod=5)
18-
assert_equals(r, 12)
17+
assert r == 12
1918
r = stream.MOM(a, timeperiod=6)
20-
assert_equals(r, 12)
19+
assert r == 12
2120
r = stream.MOM(a, timeperiod=7)
22-
assert_true(np.isnan(r))
21+
assert np.isnan(r)
2322

2423
def test_CDL3BLACKCROWS():
2524
o = np.array([39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 39.00, 40.32, 40.51, 38.09, 35.00])
@@ -28,4 +27,4 @@ def test_CDL3BLACKCROWS():
2827
c = np.array([40.29, 40.29, 40.29, 40.29, 40.29, 40.29, 40.29, 40.29, 40.29, 40.29, 40.29, 40.29, 40.29, 40.29, 40.46, 37.08, 33.37, 30.03])
2928

3029
r = stream.CDL3BLACKCROWS(o, h, l, c)
31-
assert_equals(r, -100)
30+
assert r == -100

0 commit comments

Comments
 (0)