我在PowerShell中调用了一个bat文件,并在PowerShell中给出了一个条件,如果失败,它将显示一条消息“失败”,如果通过则它将显示一条消息“通过”。我的bat文件包含单元测试用例,因此如果所有测试用例都通过了,我在Powershell中获得了一条消息“通过”,并且如果所有测试用例都失败了,或者在bat文件中最后一个测试用例都失败了,我得到了一条消息“失败”,但是如果我的第一个通过,我没有得到显示消息“失败”测试因此,如果第一个测试“失败”,第二个测试“通过”,而不是获取失败消息,那么我正在获取通过消息。我使用了条件$ LASTEXITCODE,它将给出测试(通过/失败)状态的最后状态。有什么办法可以解决这个问题,这将非常有用。
demo.bat
@echo off
echo "running test cases"
call npm run test folder1/file1/validate.test.js
call npm run test folder1/file2/validate.test.js
test.ps1 Write-Output "starting script......"
.\demo.bat
if ($LASTEXITCODE -gt 0) {
Write-Output "Failed"
}
else {
Write-Output "Passed"
}
最佳答案
以下代码段应返回失败的部分测试的计数:
@echo off
set "scriptError=0"
echo "running test cases"
call npm run test folder1/file1/validate.test.js
if errorlevel 1 set /a scriptError+=1
call npm run test folder1/file2/validate.test.js
if errorlevel 1 set /a scriptError+=1
exit /B %scriptError%
但是,您可以将scriptError
变量构造为二进制文件,以便它显示哪个部分测试失败了并且不仅计数……(提示:如果第一个测试失败,则添加1
;为第二个测试添加2
;为第三个测试添加4;…如果为第一个测试,则添加2^(n-1)
第n次测试失败。)
关于powershell - PowerShell错误处理: how to resolve if error occurs in first or middle of the script?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62738274/