【发布时间】:2022-01-03 13:43:46
【问题描述】:
我目前是一名 C# dotnet 自动化工程师。我的测试结果之一是通过电子邮件输出的。我的测试结果输出通过 powershell。一般来说,我对电子邮件模板和 HTML 还是很陌生。
这是一个简单的 HTML 正文,其中包含我用 $EmailBody= $EmailBody.Replace("PassedTests",$Passed) 函数等替换的变量
整个前提:我的脚本将 Total tests/Passed/Failed/Skipped 替换为我在测试运行后从 .trx 文件中提取的数据。 我的提取码:
$PassedTests = $testResultsXml.TestRun.ResultSummary.Counters.Passed
$FailedTests = $testResultsXml.TestRun.ResultSummary.Counters.Failed
$SkippedTests = $testResultsXml.TestRun.ResultSummary.Counters.Skipped
$OnlyFailed = $testResultsXml.TestRun.Results.UnitTestResult | Where-Object { $_.outcome -eq "Failed" }
$FailedTestsName = $OnlyFailed.TestName
如果 HTML 正文中有任何失败的测试,我有一个“错误列表”表(下图)显示测试名称
@</td>
</tr>
<!--end img-->
<tr>
<td height="15"></td>
</tr>
<!--title-->
<tr align="center">
<td align="center" style="font-family:
'Open Sans', Arial, sans-serif; font-size:16px;color:#3b3b3b;font-weight: bold;">**ERROR LIST**</td>
</tr>
<!--end title-->
<tr>
<td height="10"></td>
</tr>
<!--content-->
<tr align="center">
<td align="center" style="font-family: 'Open Sans', Arial, sans-serif; font-size:12px;color:#7f8c8d;line-height: 24px;">NoErrors</td>
</tr>
<!--end content-->
</table>
</td>
</tr>
<tr>
<td height="30"></td>
</tr>
</table>
现在的主要问题是:是否有可能只显示“错误列表”表只有如果有任何失败的测试?如果没有失败的测试,那么根本不显示该表会很好。 任何形式的帮助将不胜感激。谢谢!
$EmailBody= $EmailBody.Replace("PassedTests",$Passed)
$EmailBody= $EmailBody.Replace("FailedTests",$Failed)
$EmailBody= $EmailBody.Replace("SkippedTests",$Skipped)
$EmailBody= $EmailBody.Replace("ErrorList",$FailedTestsName)
$Emailattachment = "\TestResults.trx"
【问题讨论】:
-
你实际上已经拥有了这个......你只需要更深入地应用它。从电子邮件中完全删除您的细分,并添加一个占位符。从那里,如果有错误,您用错误填充该段并将其重新插入电子邮件中。否则,您只需删除占位符。看我的回答。
标签: powershell parsing automation html-parsing html-email