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

Фотография

Как определить был ли создан файл


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

#1 Rumata

Rumata

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

  • Members
  • Pip
  • 66 сообщений
  • Город:Астана

Отправлено 08 октября 2007 - 10:12

delphiscript

Тут опять вопрос появился, может кто что подобное делал?

У меня тестируемое приложение при моих определенных действиях создает в нужной директории файл формата ХХХХХХХХХ_20071008152634.xls

В конце имени файла набор типа датавремя . Дело в том что я не могу точно определить момент создания файла и следовательно узнать его имя, но вне нужно точно знать, создался он или нет.
Может сканировать количество файлов в директории и сравнивать с прошлым значением, а может смотреть в атрибутах директории дату модификации??

Есть у кого нить идеи?
если можно то с исходником
  • 0

#2 Genka

Genka

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

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


Отправлено 08 октября 2007 - 11:53

есть идеи, исходника нету :)

варианты:
1) перед запуском программы удалять из папки все XLS файлы, а в нужный момент проверять, что файл с таким расширением появился

2) я так предполагаю, что это какой-то репорт, который генерится при определенных условиях (например, при нажатии на кнопку в приложении). В момент, когда наступают эти условия, можно запомнить время с точностью до минуты и потом проверить, что файл XXXX_YYYYMMDDHHNN**.xls существует. Тут есть один недостаток: допустим, вы запомнили время в момент 11:59:59 и нажали соответствующую кнопку в приложении. Естественно, что файл не будет иметь имя XXX_20071008115959, а будет типа XXX_20071008120030. Еще хуже, если скрипт запомнит время ночью, скажем в 23-59-59/ Там изменится не только время, но и дата

3) ваш вариант с простой проверкой количества файлов не очень удачный, так как в этой папке могут создаваться/удаляться и другие файлы, что повлияет на результат непредсказуемо. То же самое касается проверки даты модификации директории. Если уж и проверять количество, то только файлов формата XXX_YYYY*****.xls

Сам я, когда решал подобную задачу (правда, с помощью СилкТеста, но это не важно), использовал вариант 1+2, т.е. сначала удалял все подобные файлы, потом дожидался, пока текущее время будет HH:NN:01, запоминал эти HH:NN и генерировал репорт, а потом проверял наличие файла XXX_YYYYDDMMHHNN**.xls. У такого варианта есть только один способ свалиться: если запоминаемое время прийдется как раз на 23:59 и файл будет генерироваться больше минуты, что обычно не наблюдается и вообще маловероятно =)
  • 0

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

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

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


#3 Rumata

Rumata

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

  • Members
  • Pip
  • 66 сообщений
  • Город:Астана

Отправлено 09 октября 2007 - 05:11

есть идеи, исходника нету :)

варианты:
1) перед запуском программы удалять из папки все XLS файлы, а в нужный момент проверять, что файл с таким расширением появился

2) я так предполагаю, что это какой-то репорт, который генерится при определенных условиях (например, при нажатии на кнопку в приложении). В момент, когда наступают эти условия, можно запомнить время с точностью до минуты и потом проверить, что файл XXXX_YYYYMMDDHHNN**.xls существует. Тут есть один недостаток: допустим, вы запомнили время в момент 11:59:59 и нажали соответствующую кнопку в приложении. Естественно, что файл не будет иметь имя XXX_20071008115959, а будет типа XXX_20071008120030. Еще хуже, если скрипт запомнит время ночью, скажем в 23-59-59/ Там изменится не только время, но и дата

3) ваш вариант с простой проверкой количества файлов не очень удачный, так как в этой папке могут создаваться/удаляться и другие файлы, что повлияет на результат непредсказуемо. То же самое касается проверки даты модификации директории. Если уж и проверять количество, то только файлов формата XXX_YYYY*****.xls

Сам я, когда решал подобную задачу (правда, с помощью СилкТеста, но это не важно), использовал вариант 1+2, т.е. сначала удалял все подобные файлы, потом дожидался, пока текущее время будет HH:NN:01, запоминал эти HH:NN и генерировал репорт, а потом проверял наличие файла XXX_YYYYDDMMHHNN**.xls. У такого варианта есть только один способ свалиться: если запоминаемое время прийдется как раз на 23:59 и файл будет генерироваться больше минуты, что обычно не наблюдается и вообще маловероятно =)


да тоже были похожие мысли
В этой директории файлы никакие другие файлы больше не создаются поэтому ошибок не возникнет
Поэтому самый оптимальный вариант пересчитывать каждый раз количество файлов в директории и по изменившемуся количеству определить создался файл али нет.
Мне в принципе не важно контролировать параметры файла кроме расширения. нужно зафиксировать только то что файл с расширением ".xls" добавился в данную директорию

Только я не знаю как это сделать а время поджимает
  • 0

#4 Dmitry N

Dmitry N

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

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

Отправлено 09 октября 2007 - 08:51

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



Вот, примерчик сделал.

function getNewFiles(path, oldFileList);
var
  i : Integer;
  SearchRec : TSearchRec;
  newFileList;
begin
  SearchRec := TSearchRec;
  i := FindFirst(path, faAnyFile, SearchRec);
  
  newFileList := '';
  while i = 0 do
  begin
	  if Pos(Utilities.LowerCase(SearchRec.Name), Utilities.LowerCase(oldFileList)) = 0 then
	  begin
		  newFileList := newFileList + SearchRec.Name + #13#10;
	  end;
	  i := FindNext(SearchRec);
	end;
  Utilities.FindClose(SearchRec);
  
  Result := Utilities.Trim(newFileList);
end;

procedure Main;
var
  path, fileList, newFileList; 
begin
  path := 'C:\Folder\*.xls';
  fileList := getNewFiles(path, '');
  Log.Message(path, fileList);

  //.. Создать файл
  
  newFileList := getNewFiles(path, fileList);
  Log.Message(path, newFileList);
end;

  • 0
С уважением,
Дмитрий

#5 slat

slat

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

  • Members
  • Pip
  • 69 сообщений
  • Город:Odessa

Отправлено 09 октября 2007 - 09:53

Рекомендую почитать вот это надеюсь поможет тут находиться очень хорошее руководство!!!
  • 0

#6 Rumata

Rumata

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

  • Members
  • Pip
  • 66 сообщений
  • Город:Астана

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

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



Вот, примерчик сделал.

function getNewFiles(path, oldFileList);
var
  i : Integer;
  SearchRec : TSearchRec;
  newFileList;
begin
  SearchRec := TSearchRec;
  i := FindFirst(path, faAnyFile, SearchRec);
  
  newFileList := '';
  while i = 0 do
  begin
	  if Pos(Utilities.LowerCase(SearchRec.Name), Utilities.LowerCase(oldFileList)) = 0 then
	  begin
		  newFileList := newFileList + SearchRec.Name + #13#10;
	  end;
	  i := FindNext(SearchRec);
	end;
  Utilities.FindClose(SearchRec);
  
  Result := Utilities.Trim(newFileList);
end;

procedure Main;
var
  path, fileList, newFileList; 
begin
  path := 'C:\Folder\*.xls';
  fileList := getNewFiles(path, '');
  Log.Message(path, fileList);

  //.. Создать файл
  
  newFileList := getNewFiles(path, fileList);
  Log.Message(path, newFileList);
end;



ОГРОМНОЕ СПАСИБО!!!
Всё получилось!
  • 0

#7 Rumata

Rumata

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

  • Members
  • Pip
  • 66 сообщений
  • Город:Астана

Отправлено 09 октября 2007 - 10:22

Рекомендую почитать вот это надеюсь поможет тут находиться очень хорошее руководство!!!


Спасибо!
  • 0


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

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