Python Popen stdin.close + wait () генерирует ResourceWarning в unittest - PullRequest
0 голосов
/ 08 января 2019

У меня есть класс Python, который наследуется от Popen:

class S(Popen):
    def exit(self):
        self.stdin.close()
        return self.wait()

Это работает нормально, за исключением того, что если я вызову метод exit() в моем модульном тесте Python (используя встроенную инфраструктуру 'unittest'), при запуске теста возникает следующая ошибка:

/ usr / lib / python3.5 / unittest / case.py: 600: Предупреждение о ресурсе: не закрыто file <_io.TextIOWrapper name = 5 encoding = 'UTF-8'> testMethod ()

Вот код теста:

class TestS(unittest.TestCase):
    def test_exit(self):
        s = S()
        self.assertTrue(s.exit() == 0)

Я знаю, что это вызвано строкой return self.wait(), потому что другие файлы не открываются, и если его заменить на return 0, предупреждение исчезнет.

Есть ли что-то еще, что нужно сделать для правильной очистки? Возможно, что-то эквивалентное pclose() в C? Нашел похожий вопрос полезным, но это не помогло решить эту проблему. Тест пройден, но я бы предпочел не подавлять предупреждение, не понимая причину.

Некоторые вещи, которые я уже попробовал, но безуспешно:

  • Блок with S() as s
  • То же, что и выше, с self.exit(), вызываемым деструктором (def __exit__)

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...