Как определить был ли создан файл
#1
Отправлено 08 октября 2007 - 10:12
Тут опять вопрос появился, может кто что подобное делал?
У меня тестируемое приложение при моих определенных действиях создает в нужной директории файл формата ХХХХХХХХХ_20071008152634.xls
В конце имени файла набор типа датавремя . Дело в том что я не могу точно определить момент создания файла и следовательно узнать его имя, но вне нужно точно знать, создался он или нет.
Может сканировать количество файлов в директории и сравнивать с прошлым значением, а может смотреть в атрибутах директории дату модификации??
Есть у кого нить идеи?
если можно то с исходником
#2
Отправлено 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 и файл будет генерироваться больше минуты, что обычно не наблюдается и вообще маловероятно =)
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#3
Отправлено 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" добавился в данную директорию
Только я не знаю как это сделать а время поджимает
#4
Отправлено 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;
Дмитрий
#6
Отправлено 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
0 пользователей, 0 гостей, 0 анонимных