jmeter 根据上一个任务日志中的字符串有条件地运行Azure DevOps任务

sxissh06  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(124)

我有一个CI管道,它运行几个JMeter测试和一些Powershell脚本。
如果JMeter测试失败,它仍然会在DevOps中报告为成功。
但是,日志将显示“Err:“,后跟测试中失败的调用数。
如果“运行出站电子邮件JMeter测试”任务已完成,并且日志中不包含“Err:“,我如何才能仅运行以下任务(写入线程引用)?

q7solyqu

q7solyqu1#

我认为更好的选择是使整个“运行出站电子邮件JMeter测试”任务失败,这样,如果出现失败,它将返回non-zero exit status code,以便管道“捕获”它
例如,您可以使用JMeter Maven Plugin运行测试,简单的 pom.xml 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>jmeter-maven</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>com.lazerycode.jmeter</groupId>
                <artifactId>jmeter-maven-plugin</artifactId>
                <version>3.3.0</version>
                <executions>
                    <!-- Generate JMeter configuration -->
                    <execution>
                        <id>configuration</id>
                        <goals>
                            <goal>configure</goal>
                        </goals>
                    </execution>
                    <!-- Run JMeter tests -->
                    <execution>
                        <id>jmeter-tests</id>
                        <goals>
                            <goal>jmeter</goal>
                        </goals>
                    </execution>
                    <!-- Fail build on errors in test -->
                    <execution>
                        <id>jmeter-check-results</id>
                        <goals>
                            <goal>results</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

并输出:

或者,您也可以使用Taurus自动化框架,该框架具有Pass/Fail criteria subsystem
配置示例:

execution:
- scenario: simple

scenarios:
  simple:
    script: test.jmx

reporting:
- module: passfail
  criteria:
  - succ<100%, continue as failed

和输出:

cwxwcias

cwxwcias2#

jmeter测试在Powershell脚本中返回了一个Object[],所以技巧是遍历数组,看看是否有任何错误,如果有,抛出一个Exception。这会使管道中的步骤失败,因此后续步骤不会执行。

$logs = jmeter -n -t $TestFilePath 
$successLogFound = $false
foreach($log in $logs)
{
    if($log.Contains("Err:     0"))
    {
        $successLogFound = $true
        break;
    }
}
if(!$successLogFound)
{
    $ErrorActionPreference = 'Stop'
    Write-Error "Test failed."
}

相关问题