Перейти к содержимому

Фотография

Взаимодействие скриптов из разных проектов


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 14

#1 Qwertylolman

Qwertylolman

    Новый участник

  • Members
  • Pip
  • 40 сообщений
  • ФИО:Кузнецов Евгений Геннадиевич

Отправлено 21 сентября 2010 - 14:22

отступление: я - девелопер-ООПшник до костей на которого свалили TestComplete, мотивировав тем что QA не умеют программировать и не осилят скрипты. то что я ничего не понимаю в QA начальство не волнует :/

теперь сама суть.
как у порядочного ООПшника во мне сразу проснулось желание делать объектную модель в меру возможностей скриптовых языков.
структура съюита:
проект с основными, часто используемыми скриптами
проект для запуска всего хлама
проекты со скриптами конкретных тестов

проблема:
из проекта для запуска всего хлама будут запускаться скрипты с тестами. тянуть все необходимые файлы нет желания (как их шарить я уже разобрался), так как пропадает весь смысл разбивать съюит на проекты. можно-ли как-то "подключать" скрипты из разных проектов или сами проекты аля .dll?

TC 7.52
  • 0

#2 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 21 сентября 2010 - 15:32

Если проекты используют один и тот же скриптовый язык, то так можно сделать:
  • В проекте A делаете Add Existing Item и импортируете скрипт из проекта B.
  • В скрипт проекта A добавляете USEUNIT-ссылку на импортированный скрипт (см. Calling Routines and Variables Declared in Another Unit).
  • Profit!

  • 0

#3 Qwertylolman

Qwertylolman

    Новый участник

  • Members
  • Pip
  • 40 сообщений
  • ФИО:Кузнецов Евгений Геннадиевич

Отправлено 21 сентября 2010 - 15:41

Если проекты используют один и тот же скриптовый язык, то так можно сделать:

  • В проекте A делаете Add Existing Item и импортируете скрипт из проекта B.
  • В скрипт проекта A добавляете USEUNIT-ссылку на импортированный скрипт (см. Calling Routines and Variables Declared in Another Unit).
  • Profit!

профита нет, так как с помощью "Add Existing Item" файл все равно переносится в проект А (хотя и по ссылке). а очень не хочется захламлять проект А левыми файлами. но выбора, видимо, нет :/
  • 0

#4 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 21 сентября 2010 - 17:13

Есть еще один вариант - можно сделать script extension с нужными функциями. Пример есть здесь.
  • 0

#5 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 21 сентября 2010 - 21:10

Простите за любопытство, а что именно предполагается тестировать на TC?
интерфейс программы на чем написан?
  • 0

#6 Qwertylolman

Qwertylolman

    Новый участник

  • Members
  • Pip
  • 40 сообщений
  • ФИО:Кузнецов Евгений Геннадиевич

Отправлено 22 сентября 2010 - 06:29

script extension - интересно, спасибо.

объемное приложение с кучей графических элементов, .net3.5 и компоненты devcomponents. TC используется для написания регрессионных тестов которые будут запускаться между выкаткой новой версии и передачей её QA.
  • 0

#7 Qwertylolman

Qwertylolman

    Новый участник

  • Members
  • Pip
  • 40 сообщений
  • ФИО:Кузнецов Евгений Геннадиевич

Отправлено 22 сентября 2010 - 13:20

да, со script extension - почти то что надо. но возникла такая проблема, скрипт на java не импортируется. когда пишу "имя.", перед открытием менюшки с функциями вываливается вот такая ошибка
Прикрепленный файл  1.JPG   13,6К   21 Количество загрузок:
пример с http://www.automated...ngutils-object/ работет.
тело скрипта, JScript.
// filename.sj
function Run(app)
{
	try
  {	
		if (app == null)
			return;
		app.Close();
		app.Run();    
  }
  catch(exception)
  {
    Log.Error("Exception", exception.description);
  }
}
//пробовал возвращать просто что-то, а не приложение из TestedApps. все равно вываливается
function GetApp()
{
	try
  {
    var app = TestedApps["testedAppName"];		
		return app;
  }
  catch(exception)
  {
    Log.Error("Exception", exception.description);
  }
}
function RunTestedApp()
{
  try
  {
    var app = GetApp();
		if (app == null)
			return null;
		
		app.Close();			
		app.Run();
		return app;
  }
  catch(exception)
  {
    Log.Error("Exception", exception.description);
  }
}

  • 0

#8 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 22 сентября 2010 - 17:59

Здравствуйте.

Сдаётся мне что проблема в кодировке. Если ваши файлы со скриптами сохранены в Unicode - пересохраните их в ANSI.
  • 0
С уважением,
Дмитрий

#9 Qwertylolman

Qwertylolman

    Новый участник

  • Members
  • Pip
  • 40 сообщений
  • ФИО:Кузнецов Евгений Геннадиевич

Отправлено 23 сентября 2010 - 08:47

здравствуйте.

да, он был в юникоде.

а вот этот метод прокатит, если его запускать через script extension? как я понял, TestedApps фишка чисто TestComplete'а =) сообразит-ли скрипт откуда вытаскивать приложение? естественно, при условии запуска всего съюита из ТС.
function GetApp()
{
        try
  {
    var app = TestedApps["testedAppName"];              
                return app;
  }
  catch(exception)
  {
    Log.Error("Exception", exception.description);
  }
}

  • 0

#10 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 23 сентября 2010 - 10:46

Вот список TestComplete'овских объектов, которые можно использовать в script extensions:
Objects Available to Script Extensions

TestedApps там нет.
  • 0

#11 stilet

stilet

    Новый участник

  • Members
  • Pip
  • 23 сообщений


Отправлено 21 октября 2010 - 15:53

А если проекты используют разные скриптовые языки, то что тогда?
  • 0

#12 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 25 октября 2010 - 08:43

Здравствуйте.

Всё должно работать.
  • 0
С уважением,
Дмитрий

#13 stilet

stilet

    Новый участник

  • Members
  • Pip
  • 23 сообщений


Отправлено 25 октября 2010 - 09:15

а можно ли вызвать в проекте, скажем на JScript ф-ю из проекта, скажем на DelphiScript? Если да, тогда напишите как это сделать, желательно с примером :)
  • 0

#14 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 22 ноября 2010 - 11:38

Здравствуйте.

Нет, в рамках одного проекта может быть использован только один язык. Исключением могут считаться Script Extensions - их можно подключать в любом проекте, но они могут быть написаны только на JScript или VBScript.
  • 0
С уважением,
Дмитрий

#15 Akmas

Akmas

    Новый участник

  • Members
  • Pip
  • 31 сообщений

Отправлено 30 января 2012 - 10:57

А можно в проекте, написанном на делфи скрипте запустить функцию из проекта на java-скрипте? Оба проекта находятся в одном project suite'е? Если можно то, приведите пожалуйста код. Пусть у нас project1 - проект на delphi script, проект project2 - на java script. Функция funk1 находится в модуле unit1 проекта project2. Её надо запустить из модуля проекта project1.
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных