我目前是一名 C# dotnet 自動化工程師。我的測驗結果輸出之一是通過電子郵件。我的測驗結果輸出通過 powershell。總的來說,我對電子郵件模板和 HTML 還很陌生。這是一個簡單的 HTML 正文,其中包含我用$EmailBody= $EmailBody.Replace("PassedTests",$Passed)函式等替換的變數
整個前提:我的腳本用我在測驗運行后從 .trx 檔案中提取的資料替換了 Total tests/Passed/Failed/Skipped 資料。我的提取代碼:
$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"
uj5u.com熱心網友回復:
你在好的道路上。你只需要擴展你正在做的事情。
- 洗掉電子郵件中可能存在或不存在的內容(“錯誤串列”部分,因為如果沒有錯誤,它將不存在)
- 將您洗掉的部分放在自己的變數中
- 在您的主 html 模板中應位于的位置添加一個占位符(就像您已經做的那樣,因此我們可以在 html 模板中進行替換。
從那里,邏輯是:
- 如果有 0 個錯誤,則將主模板中的占位符替換為空字串(您不希望該占位符出現在最終電子郵件中)
- 如果有 1 個或多個錯誤,則不是用錯誤串列替換,而是構建一個包含要附加的部分的新變數,然后用錯誤內容替換其回圈,最后用該部分替換占位符(即包含錯誤回圈)
那看起來像這樣。
$EmailBody = @'
</td>
</tr>
<!--end img-->
<tr>
<td height="15"></td>
</tr>
**ErrorsTable**
'@
$ErrorListBody = @'
<!--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>
'@
if ($FailedTests.Count -gt 0) {
# inserting errors to the `$ErrorListBody` html segment
$ErrorsHtml = $ErrorListBody.Replace("ErrorList", $FailedTestsName)
# inserting the html segment into the main email
$EmailBody = $EmailBody.Replace("**ErrorsTable**", $ErrorsHtml)
} else {
# Removing the placeholder from the main template.
$EmailBody = $EmailBody.Replace("**ErrorsTable**", '')
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/366184.html
標籤:电源外壳 解析 自动化 html解析 html-email
