Я запускаю свои тесты с помощью jybot, т.к. использую библиотеку на Java. Но мне необходимо так же задействовать библиотеку на Python, которая вызывает cx_Oracle. При этом я получаю ошибку
Importing test library 'c:\Testing\rf-java3\lib\OracleDB.py' failed: NameError: name 'cx_Oracle' is not defined.
#!/usr/bin/env python
import os
import sys
class ExampleRemoteLibrary:
"""Example library to be used with Robot Framework's remote server.
This documentation is visible in docs generated by _libdoc.py_
starting from Robot Framework 2.6.2.
"""
def __init__(self):
"""Also this doc should be in shown in library doc."""
def count_items_in_directory(self, path):
"""Returns the number of items in the directory specified by `path`."""
return len([i for i in os.listdir(path) if not i.startswith('.')])
def strings_should_be_equal(self, str1, str2):
print "Comparing '%s' to '%s'" % (str1, str2)
if str1 != str2:
raise AssertionError("Given strings are not equal")
if __name__ == '__main__':
from robotremoteserver import RobotRemoteServer
RobotRemoteServer(ExampleRemoteLibrary(), *sys.argv[1:])
так ее запустить
python examplelibrary.py localhost 8270
и так вот использовать
*** Settings ***
Library Remote http://localhost:${PORT}
*** Variables ***
${PORT} 8270
*** Test Cases ***
Count Items in Directory
${items1} = Count Items In Directory ${CURDIR}
${items2} = Count Items In Directory ${TEMPDIR}
Log ${items1} items in '${CURDIR}' and ${items2} items in '${TEMPDIR}'
Failing Example
Strings Should Be Equal Hello Hello
Strings Should Be Equal not equal
Спасибо за ответ! Я пробовала использовать этот тестовый пример, правда немного его изменив, чтобы у меня заработало. Библиотека ExampleRemoteLibrary при инициализации не принимает аргументов, а в примере мы передаем хост, порт. И в тесте вызываем почему-то Remote. Но может быть я ошибаюсь.
Суть однако в том, что в моем случае все равно получается ошибка импорта библиотеки cx_Oracle.
В используемой библиотеке (OracleDB) я пытаюсь импортировать cx_Oracle:
if __name__ == '__main__':
from robotremoteserver import RobotRemoteServer
RobotRemoteServer(OracleDB(), *sys.argv[1:])
robotremoteserver положила в папку с библиотеками lib.
Мой тестовый пример с двумя используемыми библиотеками выглядит так:
*** Settings ***
Library MyXMLCompare
Library OracleDB.py
*** Variables ***
${PORT} 8270
*** Test Cases ***
Usa Java Library
${Path1} Set Variable 1.xml
${Path2} Set Variable 2.xml
${encoding_string} Set Variable UTF-8
${res} testCompare ${Path1} ${Path2} ${encoding_string}
Log ${res}
Should Be Equal As Integers 1 ${res} XML are not equal. See log.
Remote Test
connect_to_oracle rddb3 EP_SCC_63 EP_SCC_63
Запускаю через jybot:
set CLASSPATH=%CD%\lib\com.springsource.org.custommonkey.xmlunit-1.2.0.jar;%CLASSPATH%
jybot --variable PORT:7777 --pythonpath lib java-custom-library.txt
Ошибка: Importing test library ‘c:\Testing\RF_training\rf-java3\lib\OracleDB.py’ failed: NameError: name ‘cx_Oracle’ is not defined
Вам надо вызывать Remote библиотеку, а не .py файл
Еще раз повторяю, надо внимательно прочитать, как работает Remote Library. Возьмите пример из Google Code Archive - Long-term storage for Google Code Project Hosting. и попытайтесь его запустить без своих изменений, ровно как там есть. Как только поймете, как работает Remote Library так сразу и поменяете на свой код.