Skip to content

Commit 3454a3c

Browse files
committed
parametrize a bunch of tests
1 parent c201f9b commit 3454a3c

18 files changed

+313
-321
lines changed

pandas/tests/indexes/datetimes/test_arithmetic.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -614,19 +614,19 @@ def test_sub_dti_dti(self):
614614
result = dti2 - dti1
615615
tm.assert_index_equal(result, expected)
616616

617-
def test_sub_period(self):
618-
# GH 13078
617+
@pytest.mark.parametrize('freq', [None, 'D'])
618+
def test_sub_period(self, freq):
619+
# GH#13078
619620
# not supported, check TypeError
620621
p = pd.Period('2011-01-01', freq='D')
621622

622-
for freq in [None, 'D']:
623-
idx = pd.DatetimeIndex(['2011-01-01', '2011-01-02'], freq=freq)
623+
idx = pd.DatetimeIndex(['2011-01-01', '2011-01-02'], freq=freq)
624624

625-
with pytest.raises(TypeError):
626-
idx - p
625+
with pytest.raises(TypeError):
626+
idx - p
627627

628-
with pytest.raises(TypeError):
629-
p - idx
628+
with pytest.raises(TypeError):
629+
p - idx
630630

631631
def test_ufunc_coercions(self):
632632
idx = date_range('2011-01-01', periods=3, freq='2D', name='x')

pandas/tests/indexes/datetimes/test_construction.py

+43-44
Original file line numberDiff line numberDiff line change
@@ -351,52 +351,51 @@ def test_constructor_coverage(self):
351351
freq='B')
352352
pytest.raises(ValueError, DatetimeIndex, periods=10, freq='D')
353353

354-
def test_constructor_datetime64_tzformat(self):
355-
# see gh-6572: ISO 8601 format results in pytz.FixedOffset
356-
for freq in ['AS', 'W-SUN']:
357-
idx = date_range('2013-01-01T00:00:00-05:00',
358-
'2016-01-01T23:59:59-05:00', freq=freq)
359-
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
360-
freq=freq, tz=pytz.FixedOffset(-300))
361-
tm.assert_index_equal(idx, expected)
362-
# Unable to use `US/Eastern` because of DST
363-
expected_i8 = date_range('2013-01-01T00:00:00',
364-
'2016-01-01T23:59:59', freq=freq,
365-
tz='America/Lima')
366-
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
367-
368-
idx = date_range('2013-01-01T00:00:00+09:00',
369-
'2016-01-01T23:59:59+09:00', freq=freq)
370-
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
371-
freq=freq, tz=pytz.FixedOffset(540))
372-
tm.assert_index_equal(idx, expected)
373-
expected_i8 = date_range('2013-01-01T00:00:00',
374-
'2016-01-01T23:59:59', freq=freq,
375-
tz='Asia/Tokyo')
376-
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
354+
@pytest.mark.parametrize('freq', ['AS', 'W-SUN'])
355+
def test_constructor_datetime64_tzformat(self, freq):
356+
# see GH#6572: ISO 8601 format results in pytz.FixedOffset
357+
idx = date_range('2013-01-01T00:00:00-05:00',
358+
'2016-01-01T23:59:59-05:00', freq=freq)
359+
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
360+
freq=freq, tz=pytz.FixedOffset(-300))
361+
tm.assert_index_equal(idx, expected)
362+
# Unable to use `US/Eastern` because of DST
363+
expected_i8 = date_range('2013-01-01T00:00:00',
364+
'2016-01-01T23:59:59', freq=freq,
365+
tz='America/Lima')
366+
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
367+
368+
idx = date_range('2013-01-01T00:00:00+09:00',
369+
'2016-01-01T23:59:59+09:00', freq=freq)
370+
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
371+
freq=freq, tz=pytz.FixedOffset(540))
372+
tm.assert_index_equal(idx, expected)
373+
expected_i8 = date_range('2013-01-01T00:00:00',
374+
'2016-01-01T23:59:59', freq=freq,
375+
tz='Asia/Tokyo')
376+
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
377377

378378
# Non ISO 8601 format results in dateutil.tz.tzoffset
379-
for freq in ['AS', 'W-SUN']:
380-
idx = date_range('2013/1/1 0:00:00-5:00', '2016/1/1 23:59:59-5:00',
381-
freq=freq)
382-
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
383-
freq=freq, tz=pytz.FixedOffset(-300))
384-
tm.assert_index_equal(idx, expected)
385-
# Unable to use `US/Eastern` because of DST
386-
expected_i8 = date_range('2013-01-01T00:00:00',
387-
'2016-01-01T23:59:59', freq=freq,
388-
tz='America/Lima')
389-
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
390-
391-
idx = date_range('2013/1/1 0:00:00+9:00',
392-
'2016/1/1 23:59:59+09:00', freq=freq)
393-
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
394-
freq=freq, tz=pytz.FixedOffset(540))
395-
tm.assert_index_equal(idx, expected)
396-
expected_i8 = date_range('2013-01-01T00:00:00',
397-
'2016-01-01T23:59:59', freq=freq,
398-
tz='Asia/Tokyo')
399-
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
379+
idx = date_range('2013/1/1 0:00:00-5:00', '2016/1/1 23:59:59-5:00',
380+
freq=freq)
381+
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
382+
freq=freq, tz=pytz.FixedOffset(-300))
383+
tm.assert_index_equal(idx, expected)
384+
# Unable to use `US/Eastern` because of DST
385+
expected_i8 = date_range('2013-01-01T00:00:00',
386+
'2016-01-01T23:59:59', freq=freq,
387+
tz='America/Lima')
388+
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
389+
390+
idx = date_range('2013/1/1 0:00:00+9:00',
391+
'2016/1/1 23:59:59+09:00', freq=freq)
392+
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
393+
freq=freq, tz=pytz.FixedOffset(540))
394+
tm.assert_index_equal(idx, expected)
395+
expected_i8 = date_range('2013-01-01T00:00:00',
396+
'2016-01-01T23:59:59', freq=freq,
397+
tz='Asia/Tokyo')
398+
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
400399

401400
def test_constructor_dtype(self):
402401

pandas/tests/indexes/datetimes/test_date_range.py

+40-43
Original file line numberDiff line numberDiff line change
@@ -222,16 +222,13 @@ def test_range_misspecified(self):
222222
with tm.assert_raises_regex(ValueError, msg):
223223
date_range()
224224

225-
def test_compat_replace(self):
225+
@pytest.mark.parametrize('f', [compat.long, int])
226+
def test_compat_replace(self, f):
226227
# https://github.com/statsmodels/statsmodels/issues/3349
227228
# replace should take ints/longs for compat
228-
229-
for f in [compat.long, int]:
230-
result = date_range(Timestamp('1960-04-01 00:00:00',
231-
freq='QS-JAN'),
232-
periods=f(76),
233-
freq='QS-JAN')
234-
assert len(result) == 76
229+
result = date_range(Timestamp('1960-04-01 00:00:00', freq='QS-JAN'),
230+
periods=f(76), freq='QS-JAN')
231+
assert len(result) == 76
235232

236233
def test_catch_infinite_loop(self):
237234
offset = offsets.DateOffset(minute=5)
@@ -484,24 +481,24 @@ def test_range_tz_dateutil(self):
484481
assert dr[0] == start
485482
assert dr[2] == end
486483

487-
def test_range_closed(self):
484+
@pytest.mark.parametrize('freq', ["1D", "3D", "2M", "7W", "3H", "A"])
485+
def test_range_closed(self, freq):
488486
begin = datetime(2011, 1, 1)
489487
end = datetime(2014, 1, 1)
490488

491-
for freq in ["1D", "3D", "2M", "7W", "3H", "A"]:
492-
closed = date_range(begin, end, closed=None, freq=freq)
493-
left = date_range(begin, end, closed="left", freq=freq)
494-
right = date_range(begin, end, closed="right", freq=freq)
495-
expected_left = left
496-
expected_right = right
489+
closed = date_range(begin, end, closed=None, freq=freq)
490+
left = date_range(begin, end, closed="left", freq=freq)
491+
right = date_range(begin, end, closed="right", freq=freq)
492+
expected_left = left
493+
expected_right = right
497494

498-
if end == closed[-1]:
499-
expected_left = closed[:-1]
500-
if begin == closed[0]:
501-
expected_right = closed[1:]
495+
if end == closed[-1]:
496+
expected_left = closed[:-1]
497+
if begin == closed[0]:
498+
expected_right = closed[1:]
502499

503-
tm.assert_index_equal(expected_left, left)
504-
tm.assert_index_equal(expected_right, right)
500+
tm.assert_index_equal(expected_left, left)
501+
tm.assert_index_equal(expected_right, right)
505502

506503
def test_range_closed_with_tz_aware_start_end(self):
507504
# GH12409, GH12684
@@ -546,28 +543,28 @@ def test_range_closed_with_tz_aware_start_end(self):
546543
tm.assert_index_equal(expected_left, left)
547544
tm.assert_index_equal(expected_right, right)
548545

549-
def test_range_closed_boundary(self):
550-
# GH 11804
551-
for closed in ['right', 'left', None]:
552-
right_boundary = date_range('2015-09-12', '2015-12-01',
553-
freq='QS-MAR', closed=closed)
554-
left_boundary = date_range('2015-09-01', '2015-09-12',
555-
freq='QS-MAR', closed=closed)
556-
both_boundary = date_range('2015-09-01', '2015-12-01',
557-
freq='QS-MAR', closed=closed)
558-
expected_right = expected_left = expected_both = both_boundary
559-
560-
if closed == 'right':
561-
expected_left = both_boundary[1:]
562-
if closed == 'left':
563-
expected_right = both_boundary[:-1]
564-
if closed is None:
565-
expected_right = both_boundary[1:]
566-
expected_left = both_boundary[:-1]
567-
568-
tm.assert_index_equal(right_boundary, expected_right)
569-
tm.assert_index_equal(left_boundary, expected_left)
570-
tm.assert_index_equal(both_boundary, expected_both)
546+
@pytest.mark.parametrize('closed', ['right', 'left', None])
547+
def test_range_closed_boundary(self, closed):
548+
# GH#11804
549+
right_boundary = date_range('2015-09-12', '2015-12-01',
550+
freq='QS-MAR', closed=closed)
551+
left_boundary = date_range('2015-09-01', '2015-09-12',
552+
freq='QS-MAR', closed=closed)
553+
both_boundary = date_range('2015-09-01', '2015-12-01',
554+
freq='QS-MAR', closed=closed)
555+
expected_right = expected_left = expected_both = both_boundary
556+
557+
if closed == 'right':
558+
expected_left = both_boundary[1:]
559+
if closed == 'left':
560+
expected_right = both_boundary[:-1]
561+
if closed is None:
562+
expected_right = both_boundary[1:]
563+
expected_left = both_boundary[:-1]
564+
565+
tm.assert_index_equal(right_boundary, expected_right)
566+
tm.assert_index_equal(left_boundary, expected_left)
567+
tm.assert_index_equal(both_boundary, expected_both)
571568

572569
def test_years_only(self):
573570
# GH 6961

pandas/tests/indexes/datetimes/test_datetime.py

+20-22
Original file line numberDiff line numberDiff line change
@@ -356,12 +356,11 @@ def test_does_not_convert_mixed_integer(self):
356356
assert cols.dtype == joined.dtype
357357
tm.assert_numpy_array_equal(cols.values, joined.values)
358358

359-
def test_join_self(self):
359+
@pytest.mark.parametrize('how', ['outer', 'inner', 'left', 'right'])
360+
def test_join_self(self, how):
360361
index = date_range('1/1/2000', periods=10)
361-
kinds = 'outer', 'inner', 'left', 'right'
362-
for kind in kinds:
363-
joined = index.join(index, how=kind)
364-
assert index is joined
362+
joined = index.join(index, how=how)
363+
assert index is joined
365364

366365
def assert_index_parameters(self, index):
367366
assert index.freq == '40960N'
@@ -381,18 +380,17 @@ def test_ns_index(self):
381380
freq=index.freq)
382381
self.assert_index_parameters(new_index)
383382

384-
def test_join_with_period_index(self):
383+
@pytest.mark.parametrize('how', ['left', 'right', 'inner', 'outer'])
384+
def test_join_with_period_index(self, how):
385385
df = tm.makeCustomDataframe(
386386
10, 10, data_gen_f=lambda *args: np.random.randint(2),
387387
c_idx_type='p', r_idx_type='dt')
388388
s = df.iloc[:5, 0]
389-
joins = 'left', 'right', 'inner', 'outer'
390389

391-
for join in joins:
392-
with tm.assert_raises_regex(ValueError,
393-
'can only call with other '
394-
'PeriodIndex-ed objects'):
395-
df.columns.join(s.index, how=join)
390+
with tm.assert_raises_regex(ValueError,
391+
'can only call with other '
392+
'PeriodIndex-ed objects'):
393+
df.columns.join(s.index, how=how)
396394

397395
def test_factorize(self):
398396
idx1 = DatetimeIndex(['2014-01', '2014-01', '2014-02', '2014-02',
@@ -439,18 +437,18 @@ def test_factorize(self):
439437
tm.assert_numpy_array_equal(arr, exp_arr)
440438
tm.assert_index_equal(idx, idx3)
441439

442-
def test_factorize_tz(self):
443-
# GH 13750
444-
for tz in [None, 'UTC', 'US/Eastern', 'Asia/Tokyo']:
445-
base = pd.date_range('2016-11-05', freq='H', periods=100, tz=tz)
446-
idx = base.repeat(5)
440+
@pytest.mark.parametrize('tz', [None, 'UTC', 'US/Eastern', 'Asia/Tokyo'])
441+
def test_factorize_tz(self, tz):
442+
# GH#13750
443+
base = pd.date_range('2016-11-05', freq='H', periods=100, tz=tz)
444+
idx = base.repeat(5)
447445

448-
exp_arr = np.arange(100, dtype=np.intp).repeat(5)
446+
exp_arr = np.arange(100, dtype=np.intp).repeat(5)
449447

450-
for obj in [idx, pd.Series(idx)]:
451-
arr, res = obj.factorize()
452-
tm.assert_numpy_array_equal(arr, exp_arr)
453-
tm.assert_index_equal(res, base)
448+
for obj in [idx, pd.Series(idx)]:
449+
arr, res = obj.factorize()
450+
tm.assert_numpy_array_equal(arr, exp_arr)
451+
tm.assert_index_equal(res, base)
454452

455453
def test_factorize_dst(self):
456454
# GH 13750

pandas/tests/indexes/datetimes/test_indexing.py

+14-14
Original file line numberDiff line numberDiff line change
@@ -346,25 +346,25 @@ def test_take_invalid_kwargs(self):
346346
indices, mode='clip')
347347

348348
# TODO: This method came from test_datetime; de-dup with version above
349-
def test_take2(self):
349+
@pytest.mark.parametrize('tz', [None, 'US/Eastern', 'Asia/Tokyo'])
350+
def test_take2(self, tz):
350351
dates = [datetime(2010, 1, 1, 14), datetime(2010, 1, 1, 15),
351352
datetime(2010, 1, 1, 17), datetime(2010, 1, 1, 21)]
352353

353-
for tz in [None, 'US/Eastern', 'Asia/Tokyo']:
354-
idx = DatetimeIndex(start='2010-01-01 09:00',
355-
end='2010-02-01 09:00', freq='H', tz=tz,
356-
name='idx')
357-
expected = DatetimeIndex(dates, freq=None, name='idx', tz=tz)
354+
idx = DatetimeIndex(start='2010-01-01 09:00',
355+
end='2010-02-01 09:00', freq='H', tz=tz,
356+
name='idx')
357+
expected = DatetimeIndex(dates, freq=None, name='idx', tz=tz)
358358

359-
taken1 = idx.take([5, 6, 8, 12])
360-
taken2 = idx[[5, 6, 8, 12]]
359+
taken1 = idx.take([5, 6, 8, 12])
360+
taken2 = idx[[5, 6, 8, 12]]
361361

362-
for taken in [taken1, taken2]:
363-
tm.assert_index_equal(taken, expected)
364-
assert isinstance(taken, DatetimeIndex)
365-
assert taken.freq is None
366-
assert taken.tz == expected.tz
367-
assert taken.name == expected.name
362+
for taken in [taken1, taken2]:
363+
tm.assert_index_equal(taken, expected)
364+
assert isinstance(taken, DatetimeIndex)
365+
assert taken.freq is None
366+
assert taken.tz == expected.tz
367+
assert taken.name == expected.name
368368

369369
def test_take_fill_value(self):
370370
# GH 12631

0 commit comments

Comments
 (0)