Совместное выполнение тестов unittest и Robot Framework

Наша группа оценивает Robot Test Framework для нашей группы контроля качества, не только для BDD, но и, возможно, для того, чтобы покрыть большую часть наших регулярных потребностей в тестировании функциональности. Это, безусловно, интересный проект.

В какой степени, если таковая имеется, Robot Framework основан на архитектуре xunit (unittest)? Я вижу, что утверждения unittest можно использовать, но я не вижу, чтобы сами тестовые наборы RF основывались на unittest.TestCase.

В идеале наша организация хотела бы иметь возможность писать тесты Robot Framework, а также тестовые наборы Python unittest, запускать тестовые наборы вместе из одного бегуна и получать интегрированные результаты, повторно использовать «ключевые слова» библиотеки RF Selenium2 в качестве функций, используемых нашим обычным тестовые примеры unittest, чтобы использовать общую кодовую базу SE.

Это решенная проблема? Кто-нибудь делает такие вещи?


person Aaron    schedule 03.02.2014    source источник
comment
Какие утверждения xUnit можно использовать в RobotFramework? Утверждения в РФ не похожи на утверждения xUnit. Xunit отличается от xUnit?   -  person Paul Hicks    schedule 05.02.2014


Ответы (3)


RobotFramework - не подходящий инструмент для модульного тестирования.

  • Юнит-тесты должны быть написаны на одном языке с юнитами (модулями, классами и т. Д.).
  • Возможность описывать сценарии на естественном языке (что является одной из самых сильных сторон таких систем, как RF) бесполезна в модульных тестах. На этом уровне тестирования сценарии для входа x вы получаете выход y.

RF лучше всего подходит для приемочных испытаний и интеграционных испытаний - высокотехнологичной проверки вашей системы.

Тем не менее, вы можете интегрировать RF и xunit в свою систему контроля качества вместе. И объединить отчеты из РФ и юнит-теста.

person OGrandeDiEnne    schedule 04.02.2014
comment
Да-да, я понимаю, что BDD и юнит-тесты разные. Реальность такова, что при автоматическом тестировании пользовательского интерфейса большинство людей используют какой-либо тип фреймворка модульного тестирования вместе с Selenium или аналогичным инструментом. Это юнит-тесты? Нет, не совсем. Обычно это функциональные или приемочные испытания. Дело в том, что продукты часто используются для того, для чего они не обязательно предназначены. Подобно тому, как unittest полезен для функциональных тестов, инструмент BBD, такой как RF, может быть полезен для простых функциональных тестов, а не только BDD. - person Aaron; 06.02.2014
comment
Подумав еще немного, вы, наверное, правы. unittest используется для вещей, для которых он, вероятно, не предназначен. Кажущаяся неспособность делать такие вещи, как передача параметров командной строки, является своего рода встроенным ограничением, которое может заставить людей использовать другие инструменты для тестирования интеграции. - person Aaron; 03.03.2014
comment
... Но если вы тестируете код, считаете ли вы это плохим выбором? Вот о чем этот вопрос. В конце концов, вы можете создавать ключевые слова, которые напрямую импортируют модули и функции, которые вам нужно протестировать. - person Bryan Oakley; 25.10.2014
comment
Ты можешь сделать. Вы можете импортировать python / java / и другие в РФ. Но вы увеличиваете стоимость модульного тестирования, что, вероятно, бесполезно. Какой на самом деле смысл? Запускаете их вместе? используйте инструмент сборки, такой как Maven. Объединение отчетов? напишите инструмент для объединения RF output.xml с выходным отчетом xunit. - person OGrandeDiEnne; 25.10.2014
comment
Возможно, вы увеличиваете стоимость, но вы также получаете выгоду от наличия одного инструмента вместо двух, одного механизма отчетности, а не двух, одного стандартного способа написания тестов вместо двух. Один общий способ поддержки нескольких платформ и т. Д. Это компромисс - это действительно зависит от того, что важно для вашей команды. - person Bryan Oakley; 25.10.2014

Хотя цели модульного тестирования кода и функционального / нефункционального тестирования совершенно разные, модуль python unittest может служить основой для тестирования QA и модульного тестирования. Фреймворк роботов был разработан с нуля для тестирования QA с использованием таких языков, как Python / Java.

Фреймворк роботов хорошо работает для табличных тестовых случаев с красивым выводом HTML. Хотя unittest неплохо справляется с тем, что подразумевает его название, он также может хорошо подойти для не-модульных тестов с утверждениями, вызывающими функциональный тестовый код напрямую. Существуют плагины для вывода модульных тестов, такие как HTMLTestRunner, которые имеют похожую «красивую» природу фреймворка Robot. html вывод.

Мы активно использовали платформу Robot для нашего тестирования QA на работе, и мы решили переключиться на все тестовые примеры на модуль unittest. Хотя я понимаю, что модуль не предназначен для использования в качестве функционального испытательного стенда, структура Robot оказалась сложным слоем из тестовых примеров, которые нам нужно было написать и выполнить. Это вызывало больше времени и усилий на подключение собственного тестового кода к Robot, с более жесткой и сложной отладкой по мере роста набора тестов. С помощью unittest мы выполняем те же тесты на собственном питоне (встроенные функции и плагины Robot были слишком ванильными для сложности нашего проекта). Теперь мы напрямую полагаемся на язык Python с полной поддержкой IDE во время разработки тестов QA, а затем отчитываемся с помощью любого инструмента / механизма отчетности CI.

person user3597217    schedule 25.10.2014

Робот вообще не основан на технологиях xunit. Лично я считаю, что это отличная среда для модульного тестирования кода Python, поскольку вы можете создавать ключевые слова, которые могут напрямую импортировать ваши модули. Я использую эту технику для некоторых проектов, над которыми работаю.

С помощью robot вы можете пометить свои модульные тесты или поместить их все в отдельную иерархию, чтобы вы могли запускать их отдельно от приемочных тестов, если хотите, или комбинировать их и получать статистику отдельно.

person Bryan Oakley    schedule 25.10.2014