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

Фотография

Сравнение файлов


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

#1 Alinabagi

Alinabagi

    Активный участник

  • Members
  • PipPip
  • 109 сообщений
  • Город:Leipzig, Germany

Отправлено 01 декабря 2004 - 11:40

я сравниваю два файла - копии рабочего файла до и после проведения теста. В случае как успешного так и неудачного проведения теста всегда будет меняться значение NextID. Можно ли задать как-то WR, что он должен игнорировать это поле в своиx отчетаx, т.е. сравнивать все, кроме поля <Folders NextID="140">?
  • 0

#2 Petr

Petr

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

  • Members
  • PipPipPipPip
  • 317 сообщений
  • ФИО:Можаев Петр
  • Город:Москва

Отправлено 01 декабря 2004 - 12:04

Я не работал с WR, но когда мне надо было сравнить два файла, которые всегда отличаются одним полем, а в остальном должны быть одинаковыми, то перед сравнением я просто удалял это поле в обоих файлах.
  • 0

#3 Alinabagi

Alinabagi

    Активный участник

  • Members
  • PipPip
  • 109 сообщений
  • Город:Leipzig, Germany

Отправлено 01 декабря 2004 - 12:19

No ved' dlja togo chtoby udalit' stroku iz fajla nuzhno budet prosto perepisat' etot fajl v novyj. A mne nado iz dvux fajlov po stroke udalit'. I togo u menja poluchajutsja 4 fajla, kotorye potom nado udaljat'. Mozhet byt' est' kaie-nibud' funkcii v WR dlja udalenija stroki iz fajla. Ja poka ix ne nashla.
  • 0

#4 Alinabagi

Alinabagi

    Активный участник

  • Members
  • PipPip
  • 109 сообщений
  • Город:Leipzig, Germany

Отправлено 01 декабря 2004 - 12:31

Ja xochu soxranit' izmenenija v file. Ets' funktija file_compare(f1,f2,save).
v save ja zadaju polnyj put' k failu "C:\\...\\save1.txt". Ne soxranjaet nichego. Ili nado ne txt-file zadavat'? kak eto voobsche rabotaet?
  • 0

#5 Andrei Kulabukhau

Andrei Kulabukhau

    Активный участник

  • Members
  • PipPip
  • 92 сообщений
  • Город:Minsk, Belarus

Отправлено 02 декабря 2004 - 09:25

Mozhet byt' est' kaie-nibud' funkcii v WR dlja udalenija stroki iz fajla. Ja poka ix ne nashla.

И не найдете - нет их.
А послдедний параметр в file_compare - про него в User's Guide все написано.
Там надо не путь к файлу задавать, а просто имя:
# Compare win.ini to win1.ini and save both files to "save".
file_compare("c:\\win\\win.ini","c:\\win\\win1.ini","save");

The optional save_file parameter saves the name of a third file, which
contains the differences between the first two files.

И тогда в папке \<имя_теста>\<имя_результата/debug>\<имя_теста>\ будут файлы с именами save.a и save.b

То есть я например от этой фигни толку особого не вижу...

Зато можно сделать например вот так:

public function file_compare2(in file1, in file2, in diff)
{
auto rc, tmpfile, line, command;
command = "fc \"" & file1 & "\" \"" & file2 & "\" > \"" & diff & "\"";
dos_system(command);
if(file_compare(file1, file2))
tl_step("File Compare", -1 , "Mismatch detected between File: " & file1 & " and File: " & file2 & ", See output file: "&diff);
else
tl_step("File Compare", 0 , "File: " & file1 & " matches File: " & file2);
}

Example:
file_compare2("d:\\temp\\file a.txt","d:\\temp\\file b.txt", "d:\\temp\\diff.txt");

То есть суть в том, что: чтобы сравнивать файлы в WR удобнее, чем он это может, надо приложить дополнительные усилия. Это вам не Silktest, где просто море всяческих "сервиснх" функций, которые в WR приходится писать самому. Хотя справедливости ради - со сравнением файлов там тоже не фонтан - только чистое сравнение и результат - одинаковы или нет, без наворотов... :)
  • 0

#6 Alinabagi

Alinabagi

    Активный участник

  • Members
  • PipPip
  • 109 сообщений
  • Город:Leipzig, Germany

Отправлено 02 декабря 2004 - 10:55

Spasibo za podrobnyi otvet.
a mozhno li iz fajla udalit' opredelennuju strochku pered tem kak ego s drugim failom sravnivat'?
  • 0

#7 Andrei Kulabukhau

Andrei Kulabukhau

    Активный участник

  • Members
  • PipPip
  • 92 сообщений
  • Город:Minsk, Belarus

Отправлено 02 декабря 2004 - 12:14

Spasibo za podrobnyi otvet.
a mozhno li iz fajla udalit' opredelennuju strochku pered tem kak ego s drugim failom sravnivat'?

Повторюсь - готовых функций для таких вещей нет.
А сделать можно - надо зачитать файл по строчками и переписать его в другой, пропустив ту, что вам нужно удалить. Все делается на связке file_getline + file_printf.
типа

while (file_getline(sFile1,sTmpString)==E_OK)
{
if (sTmpString!="тут ваша строка")
file_printf(sFile2,"%s\n",sTmpString);
}

"Пацанский способ" - это взять API какого-нить Araxis merge и вообще его юзать для сравнения файлов с возможностью фильтрации и т.п. наворотов, но игра не стоит свеч в большинстве случаев, включая Ваш :)
  • 0

#8 Alinabagi

Alinabagi

    Активный участник

  • Members
  • PipPip
  • 109 сообщений
  • Город:Leipzig, Germany

Отправлено 03 декабря 2004 - 13:28

Мне надо из xмл-ного файла с расширением .gpa скопировать содержимое, за исключением несколькиx строчек, в другой файл с расширением .xml. Xотя в принципе, здесь можно любое расширение поставить.
Проблема в том, что не открывается фаил xml="...\\name.gpa"
и file="\\name1.xml" тоже не открывается. Проверяла это if (file-open()==E-OK)
Моя функция
function XMLToFile(xml,file){
static TmpString,s;
file-open(xml,FO-MODE-READ);
file-open(file,FO-MODE-WRITE);

while (file-getline(xml,TmpString)==E-OK)
{
if ((index(TmpString,"<Folders NextID=")==0)||(index(TmpString,"<Tags NextID=")==0))
if ((index(TmpString,"<Objec!s NextID=")==0)||(index(TmpString,"<Routes NextID=")==0))
if ((index(TmpString,"<Pictures NextID=")==0)||(index(TmpString,"<Compositions NextID=")==0)||(index(TmpString,"<Presentations NextID=")==0))
file-printf(file,"%s\n",TmpString);
}
}

Можно ли вообще открывать xмл-файлы. Я где-то видела, что можно задавать, что файл открывать нужно в определенном редакторе, но не могу найти. Может быть эти файлы нужно в Notepadе открывать?
  • 0

#9 Andrei Kulabukhau

Andrei Kulabukhau

    Активный участник

  • Members
  • PipPip
  • 92 сообщений
  • Город:Minsk, Belarus

Отправлено 06 декабря 2004 - 10:02

Проблема в том, что не открывается фаил xml="...\\name.gpa"
и file="\\name1.xml" тоже не открывается. Проверяла это if (file-open()==E-OK)

Ну, так и что у вас возвращает функция file-open()? Могу поспорить, что код ошибки равный -10033 (
E_FILE_NOT_FOUND). Задайте правильный и полный путь к файлу.

Есть еще правда вариант что вы пытаетесь открыть файл, только что созданный вашим тестируемым приложением, и еще не закрытый.... Тогда надо или предварительно закрыть приложение, или скопировать файл в другой, вызвав команду системы copy (через dos_system).

Ну вроде все, чем можно помочь...
  • 0

#10 Andrei Kulabukhau

Andrei Kulabukhau

    Активный участник

  • Members
  • PipPip
  • 92 сообщений
  • Город:Minsk, Belarus

Отправлено 06 декабря 2004 - 10:05

Можно ли вообще открывать xмл-файлы. Я где-то видела, что можно задавать, что файл открывать нужно в определенном редакторе, но не могу найти. Может быть эти файлы нужно в Notepadе открывать?

Алина, ну вы меня пугаете.. :ph34r: А какое это отношение имеет к функциям WinRunner? Они открывают любые файлы, текст там или не текст - все равно они будут работать с ними как с текстоавыми. И потом - XML - чем вам не текстовый файл? :huh:
  • 0

#11 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 08 декабря 2004 - 07:49

Мне надо из xмл-ного файла с расширением .gpa скопировать содержимое, за исключением несколькиx строчек, в другой файл с расширением .xml.

IMHO, для работы с XML-файлами нельзя использовать функции обработки этих файлов, как текстовых. Т.к. в при такой обработке XML-файлов могут возникунть непредвиденные сложности: представьте ситуацию, когда структура исходного файла меняется: например, тэг переновится на другую строку и т.д. В этом случае процедура модификации XML файла должна подвергаться изменению.
Поэтому, я, использую DLL (Delphi), в которой (на основе стандартного парсера XML) разработаны функции изменения значений параметров, добавления, удаления тэгов и т.д.
  • 0

#12 Andrei Kulabukhau

Andrei Kulabukhau

    Активный участник

  • Members
  • PipPip
  • 92 сообщений
  • Город:Minsk, Belarus

Отправлено 08 декабря 2004 - 08:18

IMHO, для работы с XML-файлами нельзя использовать функции обработки этих файлов, как текстовых. Т.к. в при такой обработке XML-файлов могут возникунть непредвиденные сложности: представьте ситуацию, когда структура исходного файла меняется: например, тэг переновится на другую строку и т.д. В этом случае процедура модификации XML файла должна подвергаться изменению.

Нет, ну это понятно - в общем случае лучше заточенные под формат решения использовать...
Но речь в вопосе шла не о работе с XML, а осравнении двух XML файлов с предвариетльным удалением заданной строки из одного из них. Строки, а не значения тэга или не дай бог атрибута ;)
Соответсвенно вопросу я и предложил более подходящее и простое решение...
  • 0

#13 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 08 декабря 2004 - 09:03

И потом - XML - чем вам не текстовый файл? :huh:

Единственное, о чём хочется предупредить -- XML часто хранится в Unicode (или хотя бы UTF-8), так что не всякий инструмент, работающий с текстом, справляется с управлением. Если внутри буковки только английские, тогда проблем нет, а если нет (например, русские) -- тогда будьте осторожны. Выбирайте правильный просмотрщик, редактор, сравниватель, и прочая, чтобы они понимали Unicode.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


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

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