Я работаю над настройкой новой инфраструктуры для модульных тестов и интеграционных тестов моей команды и хочу убедиться, что я начинаю с выбора правильных тестовых сред.Я - встроенный тестовый код разработчика, работающий в операционной системе VxWorks с производственной базой кода C / C ++.
Нам нужна платформа, способная непосредственно тестировать C / C ++ для модульного тестирования, поэтому для наших модульных тестов я выбрал Googletest в качестве нашей платформы.
Однако для интеграционных тестов мы обычно тестировали с использованием скриптов Python (без тестовой среды).Скрипты Python подключаются к встроенной системе по сети и тестируют кейсы, отправляя команды и получая телеметрию.
Будет ли использование pytest в качестве тестовой среды выгодно тому, как мы сейчас используем Python для интеграционного тестирования встроенной системы?Большинство примеров, которые я видел, используют pytest в более модульном тестовом стиле, создавая утверждения для отдельных функций в производственной кодовой базе Python.
РЕДАКТИРОВАТЬ: В соответствии с комментарием hoefling, я приведу (очень упрощенный) примеродного из наших существующих интеграционных тестовых примеров Python, а также того, что, как я считаю, соответствовало бы его реализации Pytest.
#Current example
def test_command_counter():
preTestCmdCount = getCmdCountFromSystem()
sendCommandToSystem()
postTestCmdCount = getCmdCountFromSystem()
if (postTestCmdCount != (preTestCmdCount + 1)):
print("FAIL: Command count did not increment!")
else:
print("PASS")
#Using Pytest?
def test_command_counter():
preTestCmdCount = getCmdCountFromSystem()
sendCommandToSystem()
postTestCmdCount = getCmdCountFromSystem()
assert postTestCmdCount == (preTestCmdCount + 1)
Итак, поправьте меня, если я ошибаюсь, но кажется, что преимущества использования Pytestдля простого Python для этого упрощенного случая было бы:
Возможность использовать автоматическое обнаружение тестовых примеров Pytest, так что я могу легко запускать все свои тестовые функции вместо необходимости создаватьпользовательский код для этого.
Возможность использовать синтаксис «assert», который будет автоматически генерировать операторы «годен / негоден» для каждого теста, вместо необходимости вручную выполнять печать «годен / не годен»операторы для каждого теста