Чтобы программно предотвратить появление таких предупреждений, настройте код так, чтобы:
import warnings
if __name__ == '__main__':
with warnings.catch_warnings():
warnings.simplefilter('ignore', category=ImportWarning)
unittest.main()
Источник: https://stackoverflow.com/a/40994600/328469
Обновление:
@ billjoie, безусловно, правильно. Если ОП решает сделать ответ 52463661 принятым ответом, я согласен с этим. Я могу подтвердить, что следующее эффективно для подавления таких предупреждающих сообщений во время выполнения, используя Python версий 2.7.11, 3.4.3, 3.5.4, 3.6.5 и 3.7.1:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
import warnings
class TestPandasImport(unittest.TestCase):
def setUp(self):
warnings.simplefilter('ignore', category=ImportWarning)
def test_01(self):
import pandas # noqa: E402
self.assertTrue(True)
def test_02(self):
import pandas # noqa: E402
self.assertFalse(False)
if __name__ == '__main__':
unittest.main()
Тем не менее, я думаю, что OP следует рассмотреть возможность более глубокого изучения целей кода приложения модульных тестов, и попытаться определить импорт или операцию конкретного пакета, вызывающего фактическое предупреждение, а затем подавить предупреждение как можно ближе насколько это возможно, к месту в коде, где нарушение имеет место. Это избавит от подавления предупреждений на протяжении всего класса юнит-тестирования, что может непреднамеренно скрывать предупреждения от других частей программы.
Вне модульного теста, где-то в коде приложения:
with warnings.catch_warnings():
warnings.simplefilter('ignore', category=ImportWarning)
# import pandas
# or_ideally_the_application_code_unit_that_imports_pandas()
Может потребоваться небольшая работа, чтобы выделить конкретное место в коде, которое либо вызывает предупреждение, либо использует стороннее программное обеспечение, которое вызывает предупреждение, но разработчик получит более четкое понимание причины предупреждения, и это только улучшит общую ремонтопригодность программы.