Skip to content

Test Decorators and Better Pytest Integration in 'test_excel' #19829

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 19 commits into from
Feb 26, 2018
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Finished up decorator cleanup for reads, linted
  • Loading branch information
WillAyd committed Feb 25, 2018
commit 0f64f3a8975e4c53765e9f3c748fd121677fb880
60 changes: 29 additions & 31 deletions pandas/tests/io/test_excel.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,8 @@ def test_usecols_int(self, ext):
dfref = self.get_csv_refdf('test1')
dfref = dfref.reindex(columns=['A', 'B', 'C'])
df1 = self.get_exceldf('test1', ext, 'Sheet1', index_col=0, usecols=3)
df2 = self.get_exceldf('test1', ext, 'Sheet2', skiprows=[1], index_col=0,
usecols=3)
df2 = self.get_exceldf('test1', ext, 'Sheet2', skiprows=[1],
index_col=0, usecols=3)

with tm.assert_produces_warning(FutureWarning):
df3 = self.get_exceldf('test1', ext, 'Sheet2', skiprows=[1],
Expand All @@ -152,8 +152,8 @@ def test_usecols_list(self, ext):
dfref = dfref.reindex(columns=['B', 'C'])
df1 = self.get_exceldf('test1', ext, 'Sheet1', index_col=0,
usecols=[0, 2, 3])
df2 = self.get_exceldf('test1', ext, 'Sheet2', skiprows=[1], index_col=0,
usecols=[0, 2, 3])
df2 = self.get_exceldf('test1', ext, 'Sheet2', skiprows=[1],
index_col=0, usecols=[0, 2, 3])

with tm.assert_produces_warning(FutureWarning):
df3 = self.get_exceldf('test1', ext, 'Sheet2', skiprows=[1],
Expand All @@ -171,8 +171,8 @@ def test_usecols_str(self, ext):
df1 = dfref.reindex(columns=['A', 'B', 'C'])
df2 = self.get_exceldf('test1', ext, 'Sheet1', index_col=0,
usecols='A:D')
df3 = self.get_exceldf('test1', ext, 'Sheet2', skiprows=[1], index_col=0,
usecols='A:D')
df3 = self.get_exceldf('test1', ext, 'Sheet2', skiprows=[1],
index_col=0, usecols='A:D')

with tm.assert_produces_warning(FutureWarning):
df4 = self.get_exceldf('test1', ext, 'Sheet2', skiprows=[1],
Expand Down Expand Up @@ -277,7 +277,8 @@ def test_excel_table(self, ext):
dfref = self.get_csv_refdf('test1')

df1 = self.get_exceldf('test1', ext, 'Sheet1', index_col=0)
df2 = self.get_exceldf('test1', ext, 'Sheet2', skiprows=[1], index_col=0)
df2 = self.get_exceldf('test1', ext, 'Sheet2', skiprows=[1],
index_col=0)
# TODO add index to file
tm.assert_frame_equal(df1, dfref, check_names=False)
tm.assert_frame_equal(df2, dfref, check_names=False)
Expand Down Expand Up @@ -350,7 +351,8 @@ def test_reader_converters(self, ext):

# should read in correctly and set types of single cells (not array
# dtypes)
actual = self.get_exceldf(basename, ext, 'Sheet1', converters=converters)
actual = self.get_exceldf(basename, ext, 'Sheet1',
converters=converters)
tm.assert_frame_equal(actual, expected)

def test_reader_dtype(self, ext):
Expand Down Expand Up @@ -426,11 +428,10 @@ def test_read_excel_blank_with_header(self, ext):
actual = self.get_exceldf('blank_with_header', ext, 'Sheet1')
tm.assert_frame_equal(actual, expected)

@td.skip_if_no('openpyxl')
@td.skip_if_no('xlwt')
# GH 12292 : error when read one empty column from excel file
def test_read_one_empty_col_no_header(self, ext):
_skip_if_no_xlwt()
_skip_if_no_openpyxl()

df = pd.DataFrame(
[["", 1, 100],
["", 2, 200],
Expand All @@ -456,10 +457,9 @@ def test_read_one_empty_col_no_header(self, ext):
tm.assert_frame_equal(actual_header_none, expected)
tm.assert_frame_equal(actual_header_zero, expected)

@td.skip_if_no('openpyxl')
@td.skip_if_no('xlwt')
def test_read_one_empty_col_with_header(self, ext):
_skip_if_no_xlwt()
_skip_if_no_openpyxl()

df = pd.DataFrame(
[["", 1, 100],
["", 2, 200],
Expand All @@ -486,10 +486,9 @@ def test_read_one_empty_col_with_header(self, ext):
expected_header_zero = DataFrame(columns=[0], dtype='int64')
tm.assert_frame_equal(actual_header_zero, expected_header_zero)

@td.skip_if_no('openpyxl')
@td.skip_if_no('xlwt')
def test_set_column_names_in_parameter(self, ext):
_skip_if_no_xlwt()
_skip_if_no_openpyxl()

# GH 12870 : pass down column names associated with
# keyword argument names
refdf = pd.DataFrame([[1, 'foo'], [2, 'bar'],
Expand Down Expand Up @@ -529,14 +528,16 @@ def test_sheet_name_and_sheetname(self, ext):
dfref = self.get_csv_refdf('test1')
df1 = self.get_exceldf('test1', ext, sheet_name='Sheet1') # doc
with tm.assert_produces_warning(FutureWarning, check_stacklevel=False):
df2 = self.get_exceldf('test1', ext, sheetname='Sheet1') # bkwrd compat
df2 = self.get_exceldf('test1', ext,
sheetname='Sheet1') # bkwrd compat

tm.assert_frame_equal(df1, dfref, check_names=False)
tm.assert_frame_equal(df2, dfref, check_names=False)

def test_sheet_name_both_raises(self, ext):
with tm.assert_raises_regex(TypeError, "Cannot specify both"):
self.get_exceldf('test1', ext, sheetname='Sheet1', sheet_name='Sheet1')
self.get_exceldf('test1', ext, sheetname='Sheet1',
sheet_name='Sheet1')


@pytest.mark.parametrize("ext", ['.xls', '.xlsx', '.xlsm'])
Expand All @@ -559,9 +560,8 @@ def test_excel_read_buffer(self, ext):
actual = read_excel(xls, 'Sheet1', index_col=0)
tm.assert_frame_equal(expected, actual)

@td.skip_if_no('xlwt')
def test_read_xlrd_Book(self, ext):
_skip_if_no_xlwt()

df = self.frame
with ensure_clean('.xls') as pth:
df.to_excel(pth, "SheetA")
Expand Down Expand Up @@ -659,14 +659,12 @@ def test_reader_closes_file(self, ext):

assert f.closed

@td.skip_if_no('openpyxl')
@td.skip_if_no('xlwt')
def test_creating_and_reading_multiple_sheets(self, ext):
# Test reading multiple sheets, from a runtime created excel file
# with multiple sheets.
# See PR #9450

_skip_if_no_xlwt()
_skip_if_no_openpyxl()

def tdf(sheetname):
d, i = [11, 22, 33], [1, 2, 3]
return DataFrame(d, i, columns=[sheetname])
Expand Down Expand Up @@ -778,9 +776,9 @@ def test_read_excel_multiindex(self, ext):
header=[0, 1], skiprows=2)
tm.assert_frame_equal(actual, expected)

@td.skip_if_no('xlsxwriter')
def test_read_excel_multiindex_empty_level(self, ext):
# GH 12453
_skip_if_no_xlsxwriter()
with ensure_clean('.xlsx') as path:
df = DataFrame({
('Zero', ''): {0: 0},
Expand Down Expand Up @@ -818,9 +816,9 @@ def test_read_excel_multiindex_empty_level(self, ext):
actual = pd.read_excel(path, header=[0, 1])
tm.assert_frame_equal(actual, expected)

@td.skip_if_no('xlsxwriter')
def test_excel_multindex_roundtrip(self, ext):
# GH 4679
_skip_if_no_xlsxwriter()
with ensure_clean('.xlsx') as pth:
for c_idx_names in [True, False]:
for r_idx_names in [True, False]:
Expand Down Expand Up @@ -937,11 +935,10 @@ def test_read_excel_chunksize(self, ext):
pd.read_excel(os.path.join(self.dirpath, 'test1' + ext),
chunksize=100)

@td.skip_if_no('openpyxl')
@td.skip_if_no('xlwt')
def test_read_excel_parse_dates(self, ext):
# GH 11544, 12051
_skip_if_no_openpyxl()
_skip_if_no_xlwt() # for df2.to_excel

df = DataFrame(
{'col': [1, 2, 3],
'date_strings': pd.date_range('2012-01-01', periods=3)})
Expand Down Expand Up @@ -1707,7 +1704,8 @@ def roundtrip(df, header=True, parser_hdr=0, index=True):
assert res.shape == (1, 2)
assert res.iloc[0, 0] is not np.nan

def test_excel_010_hemstring_raises_NotImplementedError(self, merge_cells, engine, ext):
def test_excel_010_hemstring_raises_NotImplementedError(self, merge_cells,
engine,ext):
# This test was failing only for j>1 and header=False,
# So I reproduced a simple test.
if merge_cells:
Expand Down