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

Фотография

GetObjectbyName


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

#1 Bek

Bek

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

  • Members
  • Pip
  • 23 сообщений
  • Город:СПб

Отправлено 03 мая 2007 - 07:21

ищу помощи, мозги уже не работают в нужном направлении.
Есть управляющий скрипт, запускающий TestComplete и, собственно, тест посредством Integration объекта. Тест проходит отлично. Но хочется выжимки из TestLog писать в соответствующие поля трекинг системы. Тут возникла проблема.
В примерах доступ к Logs описан - проще некуда (Project.Logs...)
так вот доступа к объекту Project через COM я не нашел.
Попытался достучаться прямо до Logs пользуюсь конструкцией;
var objResultDescription = objTestCompleteApplication.Integration.GetLastResultDescription();

...

var objLogResults = objTestCompleteApplication.Integration.GetObjectByName(objResultDescription.NameOfRootLog);
объект не находится.
В чем дело? как решать?

PS тест запускается с помощью RunRoutine().

PPS может быть я непонятно описал проблему? готов прояснить детали эксперту! =)
  • 0

#2 Bek

Bek

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

  • Members
  • Pip
  • 23 сообщений
  • Город:СПб

Отправлено 03 мая 2007 - 10:54

объект не находится.


уже нашел, что так объекты можно искать только в процессе выполнения теста.
Значит такое решение не подходит.
Но что делать в итоге? Кто помочь может?
  • 0

#3 Genka

Genka

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

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 03 мая 2007 - 11:14

Я сам таким не занимался, потому ответ чисто теоретический.

Не проовали разобраться с форматом лог файлов?

Логи хранятся в <папка проекта>\Log.
Для каждого лога создается папка, именуется датой и временем запуска. В ней находятся картинки, которые создаются в процессе работы скрипта и, собственно, сам лог *.tcLog

Так вот, у файла *.tcLog обычный xml формат, если в нем разобраться, то можно вытаскивать оттуда все, что вам нужно

не совсем понятно из ваших двух постов:
с одной стороны вы пытаетесь получить доступ к логу из ТестКомплита (первый пост), т.е. именно в процессе работы скрипта, а теперь говорите, что

так объекты можно искать только в процессе выполнения теста.
Значит такое решение не подходит


имеется ли ввиду, что необходимо получать доступ к произвольным лог файлам, а не к текущему логу?
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#4 Bek

Bek

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

  • Members
  • Pip
  • 23 сообщений
  • Город:СПб

Отправлено 03 мая 2007 - 11:42

нет. с логом не пробовал разбираться.
хотелось решить задачу, пользуясь предоставленным API. Все таки продукт давно разрабатывается (работаю с 4 версией).

По поводу доступа к объектам - имеется в виду следующее:

To obtain program objects such as Sys, Log, Runner, Regions and others, use the GetObjectByName method of the Integration object.

Note: You can obtain the object only if TestComplete is running a test. If there is no tests running in TestComplete, GetObjectByName will return an empty Variant value.


то есть, мне нужен лог от только что завершившегося скрипта. А снаружи мне объекты недоступны, потому что полный лог я могу получить только после того как скрипт закончит работу - зачем мне неполный? =)

А после завершения теста - объект Log недоступен, хотя сам TCApp существует.
  • 0

#5 Bog_dan

Bog_dan

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

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Богданов Александр

Отправлено 04 мая 2007 - 14:56

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

У меня была похожая задача - вытягивал данные из лога для формирования отчета. Сначала делал как предложил Genka, т.е. работал с .xml файлом, который содержит всю информацию (правда дело было в ТС3, а в ТС4 структура xml изменилась, там не разбирался). Потом переделал, чтобы использовать Project.Logs.

Выглядит это так:
Написан "служебный" скрипт, который вставляется последним в проект. В нем используется Project.Logs, т.к. выполнение проекта еще не завершилось, то и лог доступен, и достается вся необходимая информация о выполненных только что скриптах. А дальше делайте с этой информацией что Вам надо - хотите пишите в файл(тот же xml только с вашей собственной структурой) и используйте ее уже вне ТС или же как-то иначе.

Может быть времени потратиться немало на это, но ведь всегда лучше один раз сделать и больше не париться =)
  • 0

#6 Dmitry N

Dmitry N

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

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

Отправлено 08 мая 2007 - 08:25

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

Сам не пробовал, но могу предложить такой вариант. Насколько я понимаю, программный доступ к логу текущего выполнения не доступен. То есть, надо выполнить тест, затем запустить ещё раз скрипт типа:
 //JScript
function loop()
{
  while (Project.Variables.toLoop) {
    Delay(200);
  }
}
Пока этот скрипт работает, вы спокойно работаете с логом. Как только вы закончите работу с логом, меняете значение переменной Project.Variables с 'true' на 'false' и скрипт перестаёт работать.

Как вариант, вместо скрипта loop можно запускать скрипт, который будет собирать нужную информацию из лога и сохранять её в файл.
  • 0
С уважением,
Дмитрий

#7 Bek

Bek

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

  • Members
  • Pip
  • 23 сообщений
  • Город:СПб

Отправлено 15 мая 2007 - 08:16

Всем спасибо. Я уже сделал промежуточный вариант с экспортом лога по ходу исполнения и импортом его же после.

Вариант с запуском fake test'а интересен, но, все же тоже только как workaround годится.

Всем спасибо.
  • 0

#8 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 16 января 2008 - 19:21

Появилась ли возможность получить доступ к логу выполняющейся функции или же

...программный доступ к логу текущего выполнения не доступен

?

Собственно, файл с промежуточными результатами есть, но не хотелось бы его парсить...
  • 0

#9 Dmitry N

Dmitry N

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

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

Отправлено 17 января 2008 - 04:51

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

Как я понимаю, такой возможности не появилось. По поводу парсинга лога, вот здесь есть пример как можно распарсить сохранённый лог от TestComplete 4. В ТС6 формат немного поменялся (лог теперь в нескольких файлах хранится), но, думаю, что не сильно.
  • 0
С уважением,
Дмитрий

#10 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 27 февраля 2008 - 07:44

Выполняется Project Suite (в нём определены 3-и проекта). Как в последнем проекте (из скрипта) определить текущий статус самой верхней ноды Log'а (статус Project Suite'а) без протаскивания глобальной переменной через все проекты или анализа log файла? И, по аналогии, как определить текущий статус проекта в последнем unit'е? Я так понимаю, можно получить полное дерево Log'а через COM (так ли это?), есть ли альтернативные варианты? Вечером доберусь до "комплита", может кто раньше ответит... либо придётся самому себе отвечать :help:
  • 0

#11 Dmitry N

Dmitry N

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

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

Отправлено 27 февраля 2008 - 09:54

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

Как я понимаю, ни по COM, ни внутренними средствами ТС нельзя получить доступ к логу текущего выполнения. Единственное, что можно сделать в данном случае -- сохранить лог в файл и распарсить его.
  • 0
С уважением,
Дмитрий

#12 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 27 февраля 2008 - 10:39

Как я понимаю, ни по COM, ни внутренними средствами ТС нельзя получить доступ к логу текущего выполнения. Единственное, что можно сделать в данном случае -- сохранить лог в файл и распарсить его.


Либо тянуть глобальную переменную (project suite variable), как это реализовано сейчас...
Спасибо, Дмитрий!
  • 0


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

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