предупреждение pytest при обработке файлов Excel xlrd - PullRequest
0 голосов
/ 08 января 2019

Я создаю простой пример pytest, в котором я открываю файл Excel, подсчитываю количество листов и утверждаю его.

Контрольный пример пройден, но почему-то я получаю 14 предупреждений. Как убрать эти предупреждения?

Настройка: Файл test.xlsx с 6 листами.

test_main.py

import xlrd


# ----------------------------------------------------------------------
def test_open_file():
    """
    Open and read an Excel file
    """
    path = "test.xlsx"
    book = xlrd.open_workbook(path)

    # print number of sheets
    print(book.nsheets)

    assert book.nsheets == 6



# ----------------------------------------------------------------------
if __name__ == "__main__":
    test_open_file()

Затем я выполнил команду pytest -v.

Результат:

============================================================================= test session starts ==============================================================================
platform win32 -- Python 3.7.0, pytest-4.1.0, py-1.7.0, pluggy-0.8.0 -- c:\users\testuser\appdata\local\programs\python\python37\python.exe
cachedir: .pytest_cache
rootdir: C:\Users\testuser\PycharmProjects\testingpytest\testing, inifile:
collected 1 item                                                                                                                                                                

test_main.py::test_open_file PASSED                                                                                                                                       [100%]

=============================================================================== warnings summary ===============================================================================
test_main.py::test_open_file
  c:\users\testuser\appdata\local\programs\python\python37\lib\site-packages\defusedxml\ElementTree.py:68: DeprecationWarning: The html argument of XMLParser() is deprecated
    _XMLParser.__init__(self, html, target, encoding)
  c:\users\testuser\appdata\local\programs\python\python37\lib\site-packages\defusedxml\ElementTree.py:68: DeprecationWarning: The html argument of XMLParser() is deprecated
    _XMLParser.__init__(self, html, target, encoding)
  c:\users\testuser\appdata\local\programs\python\python37\lib\site-packages\defusedxml\ElementTree.py:68: DeprecationWarning: The html argument of XMLParser() is deprecated
    _XMLParser.__init__(self, html, target, encoding)
  c:\users\testuser\appdata\local\programs\python\python37\lib\site-packages\xlrd\xlsx.py:266: PendingDeprecationWarning: This method will be removed in future versions.  Use 'tr
ee.iter()' or 'list(tree.iter())' instead.
    for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator():
  c:\users\testuser\appdata\local\programs\python\python37\lib\site-packages\defusedxml\ElementTree.py:68: DeprecationWarning: The html argument of XMLParser() is deprecated
    _XMLParser.__init__(self, html, target, encoding)
  c:\users\testuser\appdata\local\programs\python\python37\lib\site-packages\xlrd\xlsx.py:312: PendingDeprecationWarning: This method will be removed in future versions.  Use 'tr
ee.iter()' or 'list(tree.iter())' instead.
    for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator():
  c:\users\testuser\appdata\local\programs\python\python37\lib\site-packages\defusedxml\ElementTree.py:68: DeprecationWarning: The html argument of XMLParser() is deprecated
    _XMLParser.__init__(self, html, target, encoding)
  c:\users\testuser\appdata\local\programs\python\python37\lib\site-packages\xlrd\xlsx.py:266: PendingDeprecationWarning: This method will be removed in future versions.  Use 'tr
ee.iter()' or 'list(tree.iter())' instead.
    for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator():
  c:\users\testuser\appdata\local\programs\python\python37\lib\site-packages\defusedxml\ElementTree.py:68: DeprecationWarning: The html argument of XMLParser() is deprecated
    _XMLParser.__init__(self, html, target, encoding)
  c:\users\testuser\appdata\local\programs\python\python37\lib\site-packages\defusedxml\ElementTree.py:68: DeprecationWarning: The html argument of XMLParser() is deprecated
    _XMLParser.__init__(self, html, target, encoding)
  c:\users\testuser\appdata\local\programs\python\python37\lib\site-packages\defusedxml\ElementTree.py:68: DeprecationWarning: The html argument of XMLParser() is deprecated
    _XMLParser.__init__(self, html, target, encoding)
  c:\users\testuser\appdata\local\programs\python\python37\lib\site-packages\defusedxml\ElementTree.py:68: DeprecationWarning: The html argument of XMLParser() is deprecated
    _XMLParser.__init__(self, html, target, encoding)
  c:\users\testuser\appdata\local\programs\python\python37\lib\site-packages\defusedxml\ElementTree.py:68: DeprecationWarning: The html argument of XMLParser() is deprecated
    _XMLParser.__init__(self, html, target, encoding)
  c:\users\testuser\appdata\local\programs\python\python37\lib\site-packages\defusedxml\ElementTree.py:68: DeprecationWarning: The html argument of XMLParser() is deprecated
    _XMLParser.__init__(self, html, target, encoding)

-- Docs: https://docs.pytest.org/en/latest/warnings.html
==================================================================== 1 passed, 14 warnings in 0.13 seconds =====================================================================

1 Ответ

0 голосов
/ 10 марта 2019

Вы можете просто временно игнорировать предупреждения (после импорта модуля предупреждений):

with warnings.catch_warnings():
    warnings.filterwarnings("ignore", category=PendingDeprecationWarning)
    warnings.filterwarnings("ignore", category=DeprecationWarning)
    book = xlrd.open_workbook(path)
...