Email Subject / Body with passed / failed test
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-08-2010
06:32 PM
08-08-2010
06:32 PM
Email Subject / Body with passed / failed test
Hello,
is there any way that when emailing the TC's logs, in the subject or body message of the email somehow I could indicate automatically whether the test was passed / failed?
Thanks,
Andrei
7 REPLIES 7
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-22-2010
11:04 PM
08-22-2010
11:04 PM
Hi Andrei,
You can find a suitable script in the Get current Log Items How To article.
The modified version that does exactly what you need is below. Posting the message to the log is replaced by sending an e-mail message.
Sub Test()
Call SendMail(<ToAddress>, <MailServerNameOrIP>, <FromName>, <FromAddress>, <Subject>, GetLogItems())
End Sub
Function GetLogItems()
Dim tempFolder, xDoc, result
tempFolder = aqEnvironment.GetEnvironmentVariable("temp") & "\" & GetTickCount() & "\"
If 0 <> aqFileSystem.CreateFolder(tempFolder) Then
Log.Error("The " & tempFolder & " temp folder was not created")
GetLogItems = ""
Exit Function
End If
If Not Log.SaveResultsAs(tempFolder, lsHTML) Then
Log.Error("Log was not exported to the " & tempFolder & " temp folder")
GetLogItems = ""
Exit Function
End If
Set xDoc = Sys.OleObject("MSXML2.DOMDocument.4.0")
xDoc.load(tempFolder & "root.xml")
result = LogDataToText(xDoc.childNodes.item(1), 0, " ")
Call aqFileSystem.DeleteFolder(tempFolder, True)
GetLogItems = result
End Function
Function LogDataToText(logData, indentIndex, indentSymbol)
Dim i, result
If "LogData" <> logData.nodeName Then
LogDataToText = ""
Exit Function
End If
result = ""
For i = 0 To indentIndex - 1
result = result & indentSymbol
Next
result = result & "Name: " & logData.getAttribute("name") & ", status: " & GetTextOfStatus(logData.getAttribute("status")) & vbCrLf
For i = 0 To logData.childNodes.length - 1
result = result & LogDataToText(logData.childNodes.item(i), indentIndex + 1, indentSymbol)
Next
LogDataToText = result
End Function
Function GetTextOfStatus(statusIndex)
Select Case statusIndex
Case "0" GetTextOfStatus = "OK"
Case "1" GetTextOfStatus = "WARNING"
Case "2" GetTextOfStatus = "FAILED"
Case Else GetTextOfStatus = "UNDEFINED"
End Select
End Function
-----
Alexander
Customer Care Manager
Alexander
Customer Care Manager
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-24-2010
02:11 AM
08-24-2010
02:11 AM
Hello Alex,
thanks for the script. However, when I run the entire project or Project Suite, I get the following error:
"Cannot create file "". The filename or extension is too long."
I receive the error at the highlighted line of the following script that I use. I call the GetLogItems() function from another file, from withing a SendEmail() function, that is why the current script does not contain the SendEmail function.
I also attached a screen shot with the error.
function GetLogItems()
{
var tempFolder = aqEnvironment.GetEnvironmentVariable("temp") + "\\" +
GetTickCount() + "\\";
if (0 != aqFileSystem.CreateFolder(tempFolder)) {
Log.Error("The " + tempFolder + " temp folder was not created");
return "";
}
if (!Log.SaveResultsAs(tempFolder, lsHTML)) {
Log.Error("Log was not exported to the " + tempFolder + " temp folder");
return "";
}
var xDoc = Sys.OleObject("MSXML2.DOMDocument.4.0");
xDoc.load(tempFolder + "root.xml");
var result = LogDataToText(xDoc.childNodes.item(1), 0, " ");
aqFileSystem.DeleteFolder(tempFolder, true);
return result;
}
function LogDataToText(logData, indentIndex, indentSymbol)
{
if ("LogData" != logData.nodeName) {
return "";
}
var result = "";
for(var i = 0; i < indentIndex; i++) {
result += indentSymbol;
}
result = result + "<br/>" + "Name: " + logData.getAttribute("name") + ", status: " +
GetTextOfStatus(logData.getAttribute("status"));
for(var i = 0; i < logData.childNodes.lenght; i++) {
result += LogDataToText(logData.childNodes.item(i), indentIndex + 1,
indentSymbol);
}
return result;
}
function GetTextOfStatus(statusIndex)
{
switch(statusIndex) {
case "0": return "OK";
case "2": return "FAILED";
default: return "UNDEFINED";
}
}
Thanks,
Andrei
thanks for the script. However, when I run the entire project or Project Suite, I get the following error:
"Cannot create file "". The filename or extension is too long."
I receive the error at the highlighted line of the following script that I use. I call the GetLogItems() function from another file, from withing a SendEmail() function, that is why the current script does not contain the SendEmail function.
I also attached a screen shot with the error.
function GetLogItems()
{
var tempFolder = aqEnvironment.GetEnvironmentVariable("temp") + "\\" +
GetTickCount() + "\\";
if (0 != aqFileSystem.CreateFolder(tempFolder)) {
Log.Error("The " + tempFolder + " temp folder was not created");
return "";
}
if (!Log.SaveResultsAs(tempFolder, lsHTML)) {
Log.Error("Log was not exported to the " + tempFolder + " temp folder");
return "";
}
var xDoc = Sys.OleObject("MSXML2.DOMDocument.4.0");
xDoc.load(tempFolder + "root.xml");
var result = LogDataToText(xDoc.childNodes.item(1), 0, " ");
aqFileSystem.DeleteFolder(tempFolder, true);
return result;
}
function LogDataToText(logData, indentIndex, indentSymbol)
{
if ("LogData" != logData.nodeName) {
return "";
}
var result = "";
for(var i = 0; i < indentIndex; i++) {
result += indentSymbol;
}
result = result + "<br/>" + "Name: " + logData.getAttribute("name") + ", status: " +
GetTextOfStatus(logData.getAttribute("status"));
for(var i = 0; i < logData.childNodes.lenght; i++) {
result += LogDataToText(logData.childNodes.item(i), indentIndex + 1,
indentSymbol);
}
return result;
}
function GetTextOfStatus(statusIndex)
{
switch(statusIndex) {
case "0": return "OK";
case "2": return "FAILED";
default: return "UNDEFINED";
}
}
Thanks,
Andrei
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-25-2010
12:28 AM
08-25-2010
12:28 AM
Hi,
It looks like tempFolder contains a very long path. Try changing the tempFolder value, for example, "C:\ExportedLog"
Does this help?
It looks like tempFolder contains a very long path. Try changing the tempFolder value, for example, "C:\ExportedLog"
Does this help?
------
Yuri
TestComplete Customer Care Engineer
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
Yuri
TestComplete Customer Care Engineer
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-25-2010
06:17 PM
08-25-2010
06:17 PM
Hi Jared,
it works, thanks a bunch.
Andrei
it works, thanks a bunch.
Andrei
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-19-2010
10:56 PM
09-19-2010
10:56 PM
Hello,
One more question. When I run the script it lists every child in the test log.
It looks something like this:
Name: DBEDPublic_Critical, status: PASSED
Name: FFRun, status: PASSED
Name: Script Test Log [FF_Operations\FFPublic_MemberCookie], status: PASSED
Name: FF_Close, status: PASSED
Name: Script Test Log [FF_Operations\FFPublic_Close], status: PASSED
Name: PackLog_SendEmail_DBEDRegistration, status: PASSED
Name: Script Test Log [Mail\SendEmail_AtEnd], status: PASSED
where DBEDPublic_Critical beeing my project name.
The question is how can I modify this script so that it lists PASSED / FAILED only for the name of the test and not the for the script itself ?
Basically, I want it to list something like this:
Name: DBEDPublic_Critical, status: PASSED
Name: FFRun, status: PASSED
Name: FF_Close, status: PASSED
Name: PackLog_SendEmail_DBEDRegistration, status: PASSED
Thanks,
Andrei
One more question. When I run the script it lists every child in the test log.
It looks something like this:
Name: DBEDPublic_Critical, status: PASSED
Name: FFRun, status: PASSED
Name: Script Test Log [FF_Operations\FFPublic_MemberCookie], status: PASSED
Name: FF_Close, status: PASSED
Name: Script Test Log [FF_Operations\FFPublic_Close], status: PASSED
Name: PackLog_SendEmail_DBEDRegistration, status: PASSED
Name: Script Test Log [Mail\SendEmail_AtEnd], status: PASSED
where DBEDPublic_Critical beeing my project name.
The question is how can I modify this script so that it lists PASSED / FAILED only for the name of the test and not the for the script itself ?
Basically, I want it to list something like this:
Name: DBEDPublic_Critical, status: PASSED
Name: FFRun, status: PASSED
Name: FF_Close, status: PASSED
Name: PackLog_SendEmail_DBEDRegistration, status: PASSED
Thanks,
Andrei
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-21-2010
08:47 PM
09-21-2010
08:47 PM
Hi Andrei,
Modify the following code snippet of the LogDataToText function:
for(var i = 0; i < logData.childNodes.length; i++) {
result += LogDataToText(logData.childNodes.item(i), indentIndex + 1, indentSymbol);
}
in the following way:
if (logData.childNodes.length > 2)
for (var i = 0; i < logData.childNodes.length; i++) {
result += LogDataToText(logData.childNodes.item(i), indentIndex + 1, indentSymbol);
}
-----
Alexander
Customer Care Manager
Alexander
Customer Care Manager
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-22-2010
10:25 PM
09-22-2010
10:25 PM
Alex,
thanks, it works.
Andrei
thanks, it works.
Andrei
