如何在 html 文件的 td 标签中应用 if 和 OR if or condition

how to apply if and OR if or condition in td tag in html file

我正在为我的 geb spock html 报告使用 athaydes 报告。我正在尝试修改 html 报告以获取测试用例的状态。为此,我添加了新列 'Final Column' 下面是 html 我正在使用:

<table class="summary-table">
    <thead>
    <tr>
        <th>Name</th>
        <th>Features</th>
        <th>Failed</th>
        <th>Errors</th>
        <th>Skipped</th>
        <th>Time</th>
        <th>Final Status</th>
    </tr>
    </thead>
    <tbody>
    <% data.each { name, map ->
    def s = map.stats%>
    <tr class="${s.errors ? 'error' : ''} ${s.failures ? 'failure' : ''} ">
        <td><a href="${name}.html">$name</a></td>
        <td>${s.totalRuns}</td>
        <td>${s.failures}</td>
        <td>${s.errors}</td>
        <td>${s.skipped}</td>
        <td>${fmt.toTimeDuration(s.time)}</td>
        <td if="${s.totalRuns} != 0" ? 'PASS' : 'FAILED >${s.totalRuns = 0 ? 'PASS' : 'FAILED' }</td>
    </tr>
    <% } %>
    </tbody>
</table>

现在我的要求是,如果“${s.failures}”、“${s.errors}”和“${s.skipped}”都为零,那么只有列的值应该是 "PASS" 否则应该是 "FAILED".

我尝试了 <td if="${s.totalRuns} != 0" ? 'PASS' : 'FAILED >${s.totalRuns = 0 ? 'PASS' : 'FAILED' }</td> 之类的方法,但是这个解决方案不起作用,因为我对 html 很陌生。

你能在这方面帮助我吗?谢谢!

您可以使用以下代码片段,如果发生失败、错误或跳过测试则显示 FAILED,否则显示 PASS:

<td>${ s.failures || s.errors || s.skipped ? 'FAILED' : 'PASS' }</td>

因为s.failures和其他都是整数,我们不需要明确检查它们是否大于0。

如果您确实还想在 s.totalRuns 为零时隐藏该值,则可以添加另一个条件。一般经验法则:<% ... %> 之间的所有内容都可以是任何 Groovy 代码。可能有比这个更简洁的解决方案,但它确实有效:

<td>
    <% if (s.totalRuns) { %>
        ${ s.failures || s.errors || s.skipped ? 'FAILED' : 'PASS' }
    <% } %>
</td>