这是我的XML文件内容,其中我希望计数属性,例如名称、失败、跳过的。
作为输出,我想要这样的东西:
> Total name = 2,
>Total failures =1,
>Total Skipped =0,
>Total passed = 1
> 在我的xml文件中,attribute =0类似于pass,1类似fail
<?xml version="1.0" encoding="utf-8"?>
<testsuites>
<testsuite name="TVIA_Gold" tests="2" failures="0" skipped="0" time="48.5294792" timestamp="2022-05-27T10:28:20" id="3a03e3e7-7cb8-da92-8a08-b369c6fd15af" log="">
<testcase name="Gold Price Option" time="63789244138.9715" timestamp="" log="+ Passed Gold Price Option
+ Passed Close all instace of Edge Browser {LogInfo='Started 'taskkill' with arguments '/f /im msedge.exe''}

+ Passed TBox Wait {LogInfo='Waited for >5000< milliseconds.'}

+ Passed Open Application

+ Passed Navigate to Enter Vehicle Data page for Automobile
+ Passed Automobile {LogInfo='WaitOn was successful.
Expected value: "== True"
Actual value: "True"',UsedValue='True'}
+ Passed Automobile {UsedValue='X'}

+ Passed Screenshot Navigate to Enter Vehicle Data page for Automobile {LogInfo='The screenshot was successfully created.'}

+ Passed Enter Vehicle Data and Click on Next
+ Passed Make {LogInfo='WaitOn was successful.
Expected value: "== True"
Actual value: "True"',UsedValue='True'}
+ Passed Make {UsedValue='True'}
+ Passed Engine Performance [kW] {UsedValue='150'}
+ Passed Date of Manufacture (MM/DD/YYYY) {UsedValue='05/17/2018'}
+ Passed Number of Seats {UsedValue='True'}
+ Passed Fuel Type {UsedValue='True'}
+ Passed List Price [$] {UsedValue='10000'}
+ Passed Annual Mileage [mi] {UsedValue='10000'}
+ Passed Next {UsedValue='X'}

+ Passed Screenshot Enter Vehicle Data and Click on Next {LogInfo='The screenshot was successfully created.'}

+ Passed Enter Insurant Data and Click on Next
+ Passed First Name {LogInfo='WaitOn was successful.
Expected value: "== True"
Actual value: "True"',UsedValue='True'}
+ Passed First Name {UsedValue='Shawn'}
+ Passed Last Name {UsedValue='Frost'}
+ Passed Date of Birth (MM/DD/YYYY) {UsedValue='05/27/1992'}
+ Passed Gender {UsedValue='x'}
+ Passed Street Address {UsedValue='First Avenue'}
+ Passed Country {UsedValue='True'}
+ Passed Zip Code {UsedValue='20011'}
+ Passed City {UsedValue='New York'}
+ Passed Occupation {UsedValue='True'}
+ Passed Other {UsedValue='True'}
+ Passed Next » {UsedValue='X'}

+ Passed Screenshot Enter Insurant Data and Click on Next {LogInfo='The screenshot was successfully created.'}

+ Passed Enter Product Data and Click Next
+ Passed Start Date (MM/DD/YYYY) {LogInfo='WaitOn was successful.
Expected value: "== True"
Actual value: "True"',UsedValue='True'}
+ Passed Start Date (MM/DD/YYYY) {UsedValue='07/07/2022'}
+ Passed Insurance Sum {UsedValue='True'}
+ Passed Merit Rating {UsedValue='True'}
+ Passed Damage Insurance {UsedValue='True'}
+ Passed Legal Defence Insurance {UsedValue='True'}
+ Passed Courtesy Car {UsedValue='True'}
+ Passed Next {UsedValue='X'}

+ Passed Screenshot Enter Product Data and Click Next {LogInfo='The screenshot was successfully created.'}

+ Passed Select Price Option and Click Next
+ Passed priceTable {LogInfo='WaitOn was successful.
Expected value: "== True"
Actual value: "True"',UsedValue='True'}
+ Passed View Quote {UsedValue='X'}

+ Passed Screenshot Select Price Option and Click Next {LogInfo='The screenshot was successfully created.'}

+ Passed Close Edge Browser {LogInfo='Started 'taskkill' with arguments '/f /im msedge.exe''}

" />
<testcase name="Print PDF Report" time="63789244141.0105" timestamp="" log="+ Passed Print PDF Report
+ Passed Print PDF Report {LogInfo='Started 'C:\Tosca_Projects\TCShell\Execution.bat' with arguments '"/6_UsersInTraining/Arkamauli Ghosh/Import_import220517_1115/Test_Env_TestCase/DEX_Execution_TestCase/Component/Dex_Execution/TVIA_Gold/TVIA_Gold" TVIA_Gold SETF\DealerPortal''}

" />
</testsuite>
<testsuite name="TVIA_Silver" tests="2" failures="1" skipped="0" time="35.8853641" timestamp="2022-05-27T10:27:12" id="3a03e3e7-7cb9-2606-517a-6a00b34ca528" log="">
<testcase name="Silver Price Option" time="63789244060.9361" timestamp="" log=" Error Silver Price Option
+ Passed Close all instace of Edge Browser {LogInfo='Started 'taskkill' with arguments '/f /im msedge.exe''}

+ Passed TBox Wait {LogInfo='Waited for >5000< milliseconds.'}

+ Passed Open Application

 Error Navigate to Enter Vehicle Data page for Automobile {LogInfo='
Version 20.0.0.13 of the Edge Addon has been detected. Please install version 21.x.x.x of the Addon for your Edge.'}

+ Passed Screenshot Navigate to Enter Vehicle Data page for Automobile {LogInfo='The screenshot was successfully created.'}

 Error Enter Vehicle Data and Click on Next {LogInfo='
Version 20.0.0.13 of the Edge Addon has been detected. Please install version 21.x.x.x of the Addon for your Edge.'}

+ Passed Screenshot Enter Vehicle Data and Click on Next {LogInfo='The screenshot was successfully created.'}

 Error Enter Insurant Data and Click on Next {LogInfo='
Version 20.0.0.13 of the Edge Addon has been detected. Please install version 21.x.x.x of the Addon for your Edge.'}

+ Passed Screenshot Enter Insurant Data and Click on Next {LogInfo='The screenshot was successfully created.'}

 Error Enter Product Data and Click Next {LogInfo='
Version 20.0.0.13 of the Edge Addon has been detected. Please install version 21.x.x.x of the Addon for your Edge.'}

+ Passed Screenshot Enter Product Data and Click Next {LogInfo='The screenshot was successfully created.'}

 Error Select Price Option and Click Next {LogInfo='
Version 20.0.0.13 of the Edge Addon has been detected. Please install version 21.x.x.x of the Addon for your Edge.'}

+ Passed Screenshot Select Price Option and Click Next {LogInfo='The screenshot was successfully created.'}

+ Passed Close Edge Browser {LogInfo='Started 'taskkill' with arguments '/f /im msedge.exe''}

">
<failure message="Test failure"> Error Silver Price Option</failure>
</testcase>
<testcase name="Print PDF Report" time="63789244062.6585" timestamp="" log="+ Passed Print PDF Report
+ Passed Print PDF Report {LogInfo='Started 'C:\Tosca_Projects\TCShell\Execution.bat' with arguments '"/6_UsersInTraining/Arkamauli Ghosh/Import_import220517_1115/Test_Env_TestCase/DEX_Execution_TestCase/Component/Dex_Execution/TVIA_Silver/TVIA_Silver" TVIA_Silver SET\VehiclePortal''}

" />
</testsuite>
</testsuites>我被困住了,因为我没有将属性作为对象存储为int,然后将其作为输出进行计算,我认为我对PowerShell有点滞后,因为我对它非常陌生,下面是我用来让XML文件解析的小代码。
$paths = "C:\imp\TestReport.xml"
[xml]$XmlDocument = Get-Content -Path $paths
$XmlDocument.GetType().FullName
#$XmlDocument.testsuites.testsuite | Format-Table -AutoSize |
$info = $XmlDocument.testsuites.testsuite | Format-Table -AutoSize
#Write-Output $info发布于 2022-05-31 13:05:48
这样做的一种方法是
$xml = [System.Xml.XmlDocument]::new()
$xml.Load('C:\imp\TestReport.xml')
$result = [PsCustomObject]@{
'Total TestSuites' = $xml.testsuites.testsuite.Count
'Total Failures' = (([int[]]$xml.testsuites.testsuite.failures | Measure-Object -Sum).Sum
'Total Skipped' = (([int[]]$xml.testsuites.testsuite.skipped | Measure-Object -Sum).Sum
'Total Passed' = $totalTestSuites - $totalFailures
}
$result | Format-List使用示例XML,它将输出
Total TestSuites : 2
Total Failures : 1
Total Skipped : 0
Total Passed : 1https://stackoverflow.com/questions/72447065
复制相似问题