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

Фотография

QTP 9.0: Работа с файлами


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

#1 Tanya

Tanya

    Jobs manager

  • Members
  • PipPip
  • 78 сообщений
  • ФИО:Кривец Татьяна
  • Город:г. Киев

Отправлено 06 сентября 2006 - 12:55

Что требуется: результаты прохождения скрипта записывать в файл.

Сейчас вся информация о прохождении теста записывается в таблицу Data table (там в основном, цифры, потому удобно).

нужно вытащить таблички из DataTable и дописать в файл, при этом a файл предже добавить текстовую информацию о том, результаты чего приведены ниже.

А вопрос - с чего начать?
Как открыть файл?, как дописать в файл. Какие именно файлы мы можем создавать - только .txt и .Xls?
  • 0

#2 Tanya

Tanya

    Jobs manager

  • Members
  • PipPip
  • 78 сообщений
  • ФИО:Кривец Татьяна
  • Город:г. Киев

Отправлено 06 сентября 2006 - 14:31

Немного разобралась.

Появились вопросы:
1. Каким образом осуществлять запись в файл из функции.

В основном скрипте:
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("C:\Work_VSS\QTP 9.0\Activations\test.txt", True)
MyFile.WriteLine("РЕЗУЛЬТАТ РАБОТЫ.")

Получается, в функцию с фобой надо тащить fso, MyFile?

2. Какие другие форматы можно использовать - в txt не очень красиво получается.
  • 0

#3 Dmitry_NJ

Dmitry_NJ

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 3 122 сообщений
  • ФИО:Дмитрий Шевченко
  • Город:New Jersey, USA

Отправлено 06 сентября 2006 - 18:34

2. Какие другие форматы можно использовать  - в txt не очень красиво получается.

A какой формат вам нужен? Текстовый файл это не значит обязательно файл с расширением .txt. .csv или .html это тоже текстовые файлы.
  • 0
Дмитрий Шевченко

HP Software

#4 Tanya

Tanya

    Jobs manager

  • Members
  • PipPip
  • 78 сообщений
  • ФИО:Кривец Татьяна
  • Город:г. Киев

Отправлено 07 сентября 2006 - 08:44

Ок, спасибо.

А можно ли в HTML - файл вставить таблицу из DataTable?
А теги как-то можно использовать?


И первый вопрос? - у меня запись в файл должна осуществляется как из скрипта, там и из функции (вот из функции - получается только тащить переменные) - можно ли как-то иначе?
Можно ли закрывать файл, а потом в функции его открывать и дописывать?
(опять получается - надо создавать объект в каждой функции???)

И еще - как осуществляется перевод строки :shok: ?
  • 0

#5 Myroslav

Myroslav

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

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

Отправлено 07 сентября 2006 - 13:31

...
А вопрос - с чего начать?
Как открыть файл?, как дописать в файл. Какие именно файлы мы можем создавать - только .txt и .Xls?

Просмотр сообщения


Начинать нужно с постановки задачи.
Сначала нужно определить что нам нужно и для каких целей.
Если Ты пользуешься QTP, то он использует VBScript.
C помощью VBScript мы можем писать

1. В Plain-text файлы (это те, которые можно по Ф3 открыть и не видить там всякий мусор).
Пример:
Set objFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set f = objFileSystemObject.OpenTextFile(log_file_path, forWriting,True)
f.WriteLine "Text...."
Т.е отсюда:
1.1. Мы можем писать *.log, *.txt сходу без нужного там формата данных внутри.
1.2. Мы можем писать и *.html, *.csv, но для этого нужно позаботиться о ФОРМАТЕ данный в файле.

2. В другие файлы посредством OLE объектов.
Пример:
Set ExcellOnj = Sys.GetOleObject("Excel.Application") ' TestComplete sample

3. Другими средствами
  • 0

#6 Myroslav

Myroslav

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

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

Отправлено 07 сентября 2006 - 13:45

Немного разобралась.

Появились вопросы:
1. Каким образом осуществлять запись в файл из функции.

В основном скрипте:
    Dim fso, MyFile
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set MyFile = fso.CreateTextFile("C:\Work_VSS\QTP 9.0\Activations\test.txt", True)
    MyFile.WriteLine("РЕЗУЛЬТАТ РАБОТЫ.")

Получается, в функцию с фобой надо тащить fso, MyFile?


Во первых, названия файлов и прочее ВЫНОСИМ в отдельные файлы и переменные.
Во вторых, можно передавать объeкт в ф-ю, а можно сам объект сделать глобальным и юзать его (я так делаю в TestComplete)

2. Какие другие форматы можно использовать  - в txt не очень красиво получается.

Просмотр сообщения


Форматы записи можно использовать разнообразные - как запрограммировать, так и будет писать :)
1. Если тебе в напряг писать красиво в html, то пиши в txt типа

********************** РЕПОРТ**********************
Запись1<символ табулятора> Запись2<символ табулятора>
...

2. А можно и писать красиво. Например, в HTML.

Но тогда тебе прийдеться писать все С ТЕГАМИ. Т.е будет что-то типа
LogToFile("<html>")
LogToFile("<body>")
...
LogToFile("Твои данные")
...
LogToFile("</html>")
LogToFile("</body>")
  • 0

#7 Tanya

Tanya

    Jobs manager

  • Members
  • PipPip
  • 78 сообщений
  • ФИО:Кривец Татьяна
  • Город:г. Киев

Отправлено 07 сентября 2006 - 14:33

Привет, Мирослав!

Я рада приветствовать тебя в форуме!

Так - о чем это мы?
Формат выбран - мне нужно именно форматирование в HTML. попробую, как работает, я уже выводила побные вещи в лог.

А как сделать объект глобальным???
  • 0

#8 Myroslav

Myroslav

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

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

Отправлено 07 сентября 2006 - 14:58

Ну, как я уже писал, мы можем какие угодно логи писать. Дело в реализации уже.
Еще к справке - есть такая штука, как
Set objXMLDoc = CreateObject("Microsoft.XMLDOM") для работы с XML файлами.
В документации MSDN можна найти тучу методов этого объекта и я уверен, что есть и подобное для HTML.

По поводу глобальных переменных, то в TestComplete (а я его использую) переменная есть глобальной, если она не находится в блоке.
Файлы в фреймворке объеденены с помощью
' USEINIT <имя юнита, ф-и которого будут видны >
Лично я хнаню глобальные переменные и константы в ОТДЕЛЬНОМ файле и его подключаю к остальным.

По поводу QTP, то не могу сказать с уверенностью.
Есть два варианта, которые могу предложить:
1. К тесту подключаешь нужные файлы-библиотеки и эта переменная будет в одном из них и, возможно, будет глобальной по отношению к тесту - я не уверен.
2. У самого теста есть СВОИ глобальные переменные - поройся в закладках. К ней там есть свое обращение специальное. Возможно, так можна и объект хранить.

А самый лучшый способ - почитать хелп :)
  • 0

#9 Mike

Mike

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 1 079 сообщений
  • Город:Москва

Отправлено 08 сентября 2006 - 12:46

Был в отпуске, не успел ответить... :beach:

Сделать объект глобальным несложно. Весь код библиотек кроме функций выполняется во время загрузки библиотеки. Переменные, объявленные в библиотеке как Dim (a не private), являются глобальными. На примере fso

Код бибилиотеки

dim fso
set fso=CreateObject("Scripting.FileSystemObject")


теперь объект fso создан, и его можно использовать из тестов (или из других библиотек)

Но лучше не пользоваться глобальными переменными, а пользоваться методами доступа:

Код библиотеки

private fso
set i_fso=CreateObject("Scripting.FileSystemObject")

function getFSO()
   set getFSO=i_fso
end function


Теперь для получения объекта можно использовать getFSO(). Это безопаснее (так как нет риска случайно уничтожить его).

Теперь, что касается самой задачи. Задача это решается почти каждым программистом автотестов. Я, например, пишу альтернативные логи в HTML . В Knowledge Base есть мой набор библиотек - там все нужные функции есть :search: (правда, Data table я не использую, но это совсем не сложно). Версия, правда, сильно устарела. Я планирую выложить новую версию вместе с документацией, но пока не знаю, когда. :rtfm:
  • 0
Best regards,
Майк.

#10 Tanya

Tanya

    Jobs manager

  • Members
  • PipPip
  • 78 сообщений
  • ФИО:Кривец Татьяна
  • Город:г. Киев

Отправлено 12 сентября 2006 - 10:32

Майк, а как доступиться к вашим библиотекам?

В КВ только статьи.... (может, конечно, кто-то плохо ищет).

И еще вопрос - HTML в лог пишу и я (с вашей легкой руки)....
:victory:

А вот - тот-же HTML - в файл.... - пока не получается.
  • 0

#11 Mike

Mike

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 1 079 сообщений
  • Город:Москва

Отправлено 12 сентября 2006 - 11:10

Библиотеки

Правда, это сильно устаревшая версия и без документации - использовать её as is не рекоммендую - лучше просто посмотрите, как это можно сделать, подумайте как это сделать ЛУЧШЕ и сделайте. Я неспешно готовлю новую версию для публикации, но когда это случится, не могу загадывать.

Tanya, так я не понял, в чём у Вас проблема с записью логов в HTML?
  • 0
Best regards,
Майк.

#12 Tanya

Tanya

    Jobs manager

  • Members
  • PipPip
  • 78 сообщений
  • ФИО:Кривец Татьяна
  • Город:г. Киев

Отправлено 12 сентября 2006 - 12:52

Нет - проблем с записью HTML в лог (т.е. в Test -result) у меня нет...

Мне нужно HTML - во внешний файл.

Сейчас посмотрю ваши библиотеки - может, проблема и решится ;)
  • 0

#13 Tanya

Tanya

    Jobs manager

  • Members
  • PipPip
  • 78 сообщений
  • ФИО:Кривец Татьяна
  • Город:г. Киев

Отправлено 18 сентября 2006 - 10:54

Всем спасибо! Работает!!

Не столь красиво, как у Майка, но все-же. (будет куда стремиться).

библиотеки распаковались, все ок.
  • 0


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

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