One of the common file system operations used in tests is processing files in a folder and performing a certain operation on each file. This topic explains how to do this through scripting. Related file operations are explained in Working With Files From Scripts, Getting File Size, and Reading Text Files.
In TestComplete tests, you can work with files and folders using TestComplete utility objects that provide access to the file system and individual files and folders, such as aqFileSystem
, aqFolderInfo
, aqFileInfo
and others. The two examples below show how you can iterate through all files in a folder and post their names to the test log. The first example uses the file enumerator and the second one accesses files by indexes:
JavaScript, JScript
function ListFiles()
{
var oFolder, colFiles, f;
oFolder = aqFileSystem.GetFolderInfo("C:\\");
colFiles = oFolder.Files;
while (colFiles.HasNext())
{
f = colFiles.Next();
Log.Message(f.Name);
}
}
Python
def ListFiles():
oFolder = aqFileSystem.GetFolderInfo("C:\\")
colFiles = oFolder.Files
while colFiles.HasNext():
f = colFiles.Next()
Log.Message(f.Name)
VBScript
Sub ListFiles
Dim oFolder, colFiles, f
Set oFolder = aqFileSystem.GetFolderInfo("C:\")
Set colFiles = oFolder.Files
While colFiles.HasNext
Set f = colFiles.Next
Log.Message f.Name
Wend
End Sub
DelphiScript
procedure ListFiles;
var oFolder, colFiles, f;
begin
oFolder := aqFileSystem.GetFolderInfo('C:\');
colFiles := oFolder.Files;
while colFiles.HasNext do
begin
f := colFiles.Next;
Log.Message(f.Name);
end;
end;
C++Script, C#Script
function ListFiles()
{
var oFolder, colFiles, f;
oFolder = aqFileSystem["GetFolderInfo"]("C:\\");
colFiles = oFolder["Files"];
while (colFiles["HasNext"]())
{
f = colFiles["Next"]();
Log["Message"](f["Name"]);
}
}
Alternatively, you can work with files and folders using the FileSystemObject
scripting object included in Windows. For information on it and its object model, see the FileSystemObject
Object article in the MSDN library. The example below shows how you can use the FileSystemObject
object to get a list of files in a folder:
JavaScript
function ListFiles()
{
var fso, folder, myEnum, f;
fso = getActiveXObject("Scripting.FileSystemObject");
folder = fso.GetFolder("C:\\");
for (let f of folder.Files)
{
Log.Message(f.Name);
}
}
JScript
function ListFiles()
{
var fso, folder, myEnum, f;
fso = new ActiveXObject("Scripting.FileSystemObject");
folder = fso.GetFolder("C:\\");
myEnum = new Enumerator(folder.Files);
for ( ; !myEnum.atEnd(); myEnum.moveNext())
{
f = myEnum.item();
Log.Message(f.Name);
}
}
Python
def ListFiles():
fso = Sys.OleObject["Scripting.FileSystemObject"]
folder = fso.GetFolder("C:\\")
myEnum = Utils.Enumerator(folder.Files)
while not myEnum.atEnd:
f = myEnum.item;
Log.Message(f.Name)
myEnum.Movenext
VBScript
Sub ListFiles
Dim fso, folder, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\")
For Each f In folder.Files
Log.Message f.Name
Next
End Sub
DelphiScript
procedure ListFiles;
var fso, folder, enum, f;
begin
fso := Sys.OleObject('Scripting.FileSystemObject');
folder := fso.GetFolder('C:\');
enum := Utils.Enumerator(folder.Files);
while not enum.AtEnd do
begin
f := enum.item;
Log.Message(f.Name);
enum.MoveNext;
end;
end;
C++Script, C#Script
function ListFiles()
{
var fso, folder, myEnum, f;
fso = new ActiveXObject("Scripting.FileSystemObject");
folder = fso["GetFolder"]("C:\\");
myEnum = new Enumerator(folder["Files"]);
for ( ; !myEnum["atEnd"](); myEnum["moveNext"]())
{
f = myEnum["item"]();
Log["Message"](f["Name"]);
}
}
See Also
Working With Files From Scripts
Getting File Size
Reading Text Files
About File Checkpoints