Добрый день!
Возникла следующая ситуация:
в Robot Framework импортируется библиотека, написанная на Python. По сути, бибилиотека представляет из себя класс следующего вида:
class A(object):
def __init__ (self):
действия-0
def method_1(self):
действия-1
И при выполнении данного теста происходит следующее:
при импорте библиотеки сразу вызывается экземпляр класса, выполняются действия из метода init,
а при вызове метода method_1 - создается еще один, новый экземпляр класса, в котором снова, само собой, происходит выполнение действий из метода init и затем - из метода method_1.
Можно ли как-то избежать повторной инициализации, т.е. чтобы в дальнейшем все методы работали именно с экземпляром класса, созданным при импорте?
SET ROBOT_SYSLOG_FILE=c:/syslog.log
SET ROBOT_SYSLOG_LEVEL=DEBUG
pybot --loglevel DEBUG:INFO --debugfile c:/dbg.log c:\tst.txt
syslog.log
20131016 16:32:19.570 | INFO | Imported library 'Reserved' with arguments [ ] (version <unknown>, dynamic type, global scope, 10 keywords)
20131016 16:32:19.570 | INFO | Imported test library module 'Easter' from 'c:\Python27\lib\site-packages\robot\libraries\Easter.pyc'.
20131016 16:32:19.571 | DEBUG | Created keyword 'None Shall Pass'
20131016 16:32:19.571 | INFO | Imported library 'Easter' with arguments [ ] (version <unknown>, module type, global scope, 1 keywords)
20131016 16:32:19.572 | INFO | Imported test library class 'c:\test.py' from 'c:\test.py'.
**20131016 16:32:19.573 | INFO | ===From init===**
20131016 16:32:19.573 | DEBUG | Created keyword 'Method 1'
20131016 16:32:19.573 | INFO | Imported library 'c:\test.py' with arguments [ ] (version <unknown>, class type, global scope, 1 keywords)
20131016 16:32:19.573 | INFO | Started test suite 'Tst'
20131016 16:32:19.575 | INFO | Started test case 'case1'
20131016 16:32:19.575 | DEBUG | Started keyword 'test.Method 1'
20131016 16:32:19.576 | DEBUG | Ended keyword 'test.Method 1'
20131016 16:32:19.576 | INFO | Ended test case 'case1'
20131016 16:32:19.577 | INFO | Ended test suite 'Tst'
Ответ уже есть, я просто хочу показать альтернативу, где инициализация происходить всего один раз и переменная добавляется в глобальное пространство. Это больше хак, но все равно хочу рассказать.
Я использовал этот подоход, когда мне надо была переменная в виде объекта и нужно чтобы объект инициализировался всего лишь один раз для выполнения тестов. Для этого я использовал Import Variables.
Вот пример циклического выделения айдишников для тестов с одиночной инициализацией.