Skip to content

Commit 42ceff8

Browse files
committed
improve parametrized tests
1 parent daaeec2 commit 42ceff8

File tree

1 file changed

+30
-15
lines changed

1 file changed

+30
-15
lines changed

pandas/tests/series/test_io.py

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@
44
from datetime import datetime
55
import collections
66
import pytest
7-
import gzip
8-
import bz2
9-
import lzma
107

118
import numpy as np
129
import pandas as pd
1310

14-
from pandas import Series, DataFrame
11+
from pandas import Series, DataFrame, compat
1512

1613
from pandas.compat import StringIO, u
1714
from pandas.util.testing import (assert_series_equal, assert_almost_equal,
@@ -142,12 +139,31 @@ def test_to_csv_path_is_none(self):
142139
csv_str = s.to_csv(path=None)
143140
assert isinstance(csv_str, str)
144141

145-
@pytest.mark.parametrize('compression, open_func', [
146-
('gzip', gzip.open),
147-
('bz2', bz2.BZ2File),
148-
(pytest.param('xz', lzma.open, marks=td.skip_if_no_lzma)),
142+
def decompress_file(self, src_path, compression):
143+
if compression is None:
144+
f = open(src_path, 'rb')
145+
elif compression == 'gzip':
146+
import gzip
147+
f = gzip.open(src_path, 'rb')
148+
elif compression == 'bz2':
149+
import bz2
150+
f = bz2.BZ2File(src_path, 'rb')
151+
elif compression == 'xz':
152+
lzma = compat.import_lzma()
153+
f = lzma.LZMAFile(src_path, 'rb')
154+
else:
155+
msg = 'Unrecognized compression type: {}'.format(compression)
156+
raise ValueError(msg)
157+
158+
return f
159+
160+
@pytest.mark.parametrize('compression', [
161+
None,
162+
'gzip',
163+
'bz2',
164+
pytest.param('xz', marks=td.skip_if_no_lzma),
149165
])
150-
def test_to_csv_compression(self, compression, open_func):
166+
def test_to_csv_compression(self, compression):
151167

152168
s = Series([0.123456, 0.234567, 0.567567], index=['A', 'B', 'C'],
153169
name='X')
@@ -161,15 +177,14 @@ def test_to_csv_compression(self, compression, open_func):
161177
squeeze=True)
162178
assert_series_equal(s, rs)
163179

164-
# explicitly make sure file is compressed
165-
f = open_func(filename, 'rb')
180+
# explicitly ensure file was compressed
181+
f = self.decompress_file(filename, compression=compression)
166182
text = f.read().decode('utf8')
167183
assert s.name in text
184+
f.close()
168185

169-
f = open_func(filename, 'rb')
170-
assert_series_equal(s, pd.read_csv(f, index_col=0,
171-
squeeze=True))
172-
186+
f = self.decompress_file(filename, compression=compression)
187+
assert_series_equal(s, pd.read_csv(f, index_col=0, squeeze=True))
173188
f.close()
174189

175190

0 commit comments

Comments
 (0)