Кроссплатформенное модульное тестирование функций с использованием os.system в Python - PullRequest
0 голосов
/ 30 сентября 2019

Я хочу написать (предпочтительно с использованием pytest) модульный тест, чтобы определить, успешно ли следующая функция очищает терминал на нескольких платформах с помощью os_name («nt» или чего-то еще, например, «posix»):

    def clear_terminal(os_name):
        code = os.system('cls' if os_name == 'nt' else 'clear')
        print()  # add padding at top of cleared screen

Это сложно, потому что в настоящее время у меня есть доступ только к платформе на основе UNIX, и я не могу придумать простой способ проверить, будет ли присвоение os_name в качестве 'nt' работать на машине с Windows.

Пока у меня есть следующий тест (где os_name - это прибор Pytest, который может быть одним из «nt» или «posix»):

    def test_clear_terminal(os_name):
        with unittest.mock.patch(target='os.system') as os_system:
            clear_terminal()
            assert os_system.called_once_with(os_name)

Проблема, с которой я столкнулся, заключается в том, что это действительно простоисправление кода, который я тестирую, так что это в принципе бесполезно! Каким будет строгий подход к тестированию этого кода? Вам нужно будет просто запустить тест на нескольких разных платформах или есть другой способ?

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