Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Импорт java класса в robotframework, а также запуск


(Kuanysh Bekturganov) #1

Доброго времени суток товарищи!
Подскажите пожалуйста русским языком(ибо данный вопрос гуглил, ответы на других языках не смог понять).
Начал изучать robotframework на java:

  1. создал проект
  2. в src.test.java.com.selenium.test.testng.tests создал класс SimpleTest
  3. в классе создал метод testFillGoogleForm(), который стартует браузер, переходит по ссылке
  4. в src.test.java.com.selenium.test создал файл с расширением .robot

Как я понял в robotframework-е метод это keyword.
И сам вопрос:

  1. как подключить мой класс?
  2. как запустить robot? То есть через терминал pybot src/test/java/com/selenium/test/robotTest.robot?

Проделанную работу можно в гитхабе посмотреть;

Спасибо Всем!


#2

Доброго!
Очень жаль, что с языком проблемы, т.к. у робота очень хорошее удобное официальное руководство. Потому что невозможно здесь всё пересказать. Скачайте и попытайтесь перевести нужные куски, хотя бы автоматически. Есть ли человеческие переводы, не в курсе.

Начнем с того, что TestNG не нужен. Робот фреймворк - это самостоятельный тестовый движок, который запускает тесты, описанные в файлах .robot. Java-классы можно к нему подключать или не подключать по желанию, можно вообще использовать готовые библиотеки.

Далее, pybot запускает тесты в среде python, и библиотеки шагов тогда должны быть на python. Для подключения Java-классов нужно исполнять в среде jython:

  • Первый вариант: нужен установленный jython (robotframework устанавливается тоже под jython, для этого нужно запустить pip install именно из комплекта jython), а запуск тестов - через jybot.

  • Второй вариант: запуск джарника со встроенным jython:

    java -jar robotframework-2.9.jar mytests.robot

Свои библиотеки на Java можно подключать, импортируя их в файлах .robot с указанием пути к файлу:

Library    /path/to/Example.class

Далее, публичные методы этого класса можно использовать как шаги. Трансляция метода camelCase() в шаг “Camel Case” должна поддерживаться.


(Kuanysh Bekturganov) #3

Благодарю за подробный ответ! Все очень понятно! Но вопрос импорт в файл .robot все же остался.
Делаю вот таким образом:
Library src/test/java/com/selenium/test/testng/tests/SimpleTest

В ответ пишет что:
Importing test library ‘src/test/java/com/selenium/test/testng/tests/SimpleTest’ failed: ImportError: No module named src/test/java/com/selenium/test/testng/tests/SimpleTest
Traceback (most recent call last):
None

:neutral_face:


#4

Мда, почему-то действительно не хочет брать путь к файлу.
Работает, если оставить так:

Library     com.selenium.test.testng.tests.SimpleTest

Но только в classpath нужно передавать полные пути и к target/test-classes, и ко всем зависимостям в репозитории Maven.

То есть:

java -cp "ВашПроект\target\test-classes;путь-к-selenium;..." -jar robotframework.jar <перечень тестов>

Попробуйте robotframework-maven-plugin, может быть, он автоматом всё подтягивает.


(Kuanysh Bekturganov) #5

Благодарю за совет, поставил robotframework-maven-plugin, что-то пытается запустится, но пишет что:

[ ERROR ] Error in file ‘/home/user/robotFrameWork/PROJECT_JAVA/src/test/robotframework/acceptance/robotTest.robot’: Getting keyword names from library ‘com.selenium.test.testng.tests.SimpleTest’ failed: Calling dynamic method ‘getKeywordNames’ failed: IllegalStateException: Keyword pattern must be set before calling getKeywordNames.
Acceptance.robotTest

Test 1 | FAIL |
No keyword with name ‘testPage’ found.

Что я не так делаю?


(Kuanysh Bekturganov) #6

С горе пополам проблему решил.
Резюмирование решения проблем:
Проблема - 1
–Не хочет брать путь к файлу, где указывал
Library com.selenium.test.testng.tests.SimpleTest
Причина была в плагине IntelliBot
Решено таким образом: поставил Robot Plugin(в этом плагине путь к файлу берется)

Проблема -2
–При попытке запустить была ошибка “Calling dynamic method ‘getKeywordNames’ failed: IllegalStateException:
Keyword pattern must be set before calling getKeywordNames.”

Суть не понял, но нашел этот эксепшн в классе AnnotationLibrary, а класс мой “SimpleTest” (уже забыл почему) наследовался от AnnotationLibrary.
Решено таким образом: убрал наследование от класса AnnotationLibrary

Всем огромное спасибо! Если будут замечании, или же рекомендации для новичка буду благодарен!


(Kuanysh Bekturganov) #7

Кстати забыл, путь при импортирование нормально берется, а кейворд на idea все также отображается как “No Keyword found”, но рабочий :relaxed:
Пока причина не найдена


#8

Это недоработки плагина