springBoot项目: karate集成cucumber-reporting生成好看的测试报告

Karate 是一个将 API 测试自动化、模拟性能测试甚至 UI 自动化结合到一个统一框架中的开源工具. 它的测试报告默认是html格式, 如果你想要以下格式的测试报告, 则需要集成cucumber-reporting. 

假设你有一个springBoot项目, 用的是Junit5, 单纯的再集成karate和cucumber-reporting, 需要引的包如下: (当然你的项目会引spring-boot-starter-test,注意Junit的版本冲突...我用的是2.7.12)

1 pom

         <!-- cucumber-reporting -->
        <dependency>
            <groupId>net.masterthought</groupId>
            <artifactId>cucumber-reporting</artifactId>
            <version>5.7.6</version>
        </dependency>

        <!-- karate -->
        <dependency>
            <groupId>com.intuit.karate</groupId>
            <artifactId>karate-core</artifactId>
            <version>1.3.0</version>
            <classifier>all</classifier>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.intuit.karate</groupId>
            <artifactId>karate-junit5</artifactId>
            <version>1.3.0</version>
            <scope>test</scope>
        </dependency>

2 karate demo

你需要参考karate官方文档 -> 快速上手,  依葫芦画瓢写一个karate demo(本人懒得贴代码) https://gitee.com/bitlin/karate?skip_mobile=true#quickstart

demo运行成功会有HTML的测试报告生成, 浏览器可以查看,但是这不是我们想要的效果.

3 指定karate生成JSON格式的测试报告

cucumber-reporting只提供了解析JSON格式文件并重新生成美化后的HTML的方法,所以要karate生成一个JSON格式的测试报告.

只需要在KarateSampleTest的测试方法设置outputCucumberJson属性为true, 如下: 

    @Karate.Test
    Karate testTags() {
        return Karate.run("tags").relativeTo(getClass()).outputCucumberJson(true);
    }

执行karate测试, 成功就能找到对应的JSON格式测试报告文件: 

4 实现美化报告的代码

此时就需要写代码美化karate的测试报告了, 读JSON文件并使用cucumber-reporting重新生成报告

import net.masterthought.cucumber.Configuration;
import net.masterthought.cucumber.ReportBuilder;
import net.masterthought.cucumber.Reportable;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class PrettyKarateReport {

    public void generateCucumberReport() {
        File reportOutputDirectory = new File("target");
        List<String> jsonFiles = new ArrayList<>();
        //karate测试结果Json文件的位置
        jsonFiles.add("target/karate-reports/com.my.integration.karate.tags.json");
        jsonFiles.add("target/karate-reports/com.my.integration.karate.sample.json");

        String buildNumber = "1";
        String projectName = "my-integration-test";

        Configuration configuration = new Configuration(reportOutputDirectory, projectName);

        // optional configuration
        configuration.setBuildNumber(buildNumber);
        // optionally add metadata on main page
        configuration.addClassifications("Platform", "Windows");
        configuration.addClassifications("Component", "karate API Test");
        configuration.addClassifications("Version", "1.0.0");

        ReportBuilder reportBuilder = new ReportBuilder(jsonFiles, configuration);
        Reportable reportable = reportBuilder.generateReports();
    }
}

5 @AfterAll

最后就是让美化报告代码在执行完所有测试案例后跑起来啦...

import com.intuit.karate.junit5.Karate;
import org.junit.jupiter.api.AfterAll;
import org.springframework.boot.test.context.SpringBootTest;


@SpringBootTest(
        webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class KarateSampleTest {

    @Karate.Test
    Karate testSample() {
        return Karate.run(new String[]{"sample"}).relativeTo(getClass()).outputCucumberJson(true);
    }

    @Karate.Test
    Karate testTags() {
        return Karate.run("tags").relativeTo(getClass()).outputCucumberJson(true);
    }
    
    /**
     * 在跑所有测试案例之后, 调用PrettyKarateReport美化测试结果报告
     * 注意这里是: org.junit.jupiter.api.AfterAll
     */
    @AfterAll
    public static void generateReport(){
        PrettyKarateReport prettyKarateReport = new PrettyKarateReport();
        prettyKarateReport.generateCucumberReport();
    }
}

执行成功效果如下, overview-features.html就是文章开头那样的报告啦

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Karate 是一个基于 Cucumber 的开源自动化测试框架,可用于测试 API、Web、UI 等各种应用程序。以下是 Karate 的搭建步骤: 1. 安装 Java 开发环境(JDK) 确保已经安装了 Java 开发环境(JDK),可以在终端输入 java -version 命令查看是否安装成功。 2. 安装 Maven 下载并安装 Maven,可以在终端输入 mvn -version 命令查看是否安装成功。 3. 创建 Maven 项目 在终端中进入任意目录,执行如下命令: ``` mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false ``` 其中,groupId 是项目组织标识符,artifactId 是项目名称。 4. 添加 Karate 依赖 在项目根目录下的 pom.xml 文件中添加 Karate 的依赖: ``` <dependency> <groupId>com.intuit.karate</groupId> <artifactId>karate-junit5</artifactId> <version>1.1.0</version> <scope>test</scope> </dependency> ``` 5. 创建测试用例 在 src/test/java 目录下创建测试用例,可以使用 Karate 提供的特定语法编写测试用例。例如,以下是一个测试 HTTP GET 请求的示例: ``` Feature: HTTP GET test Scenario: test GET Given url 'http://httpbin.org/get' When method GET Then status 200 And match response.headers['content-type'] contains 'application/json' ``` 6. 运行测试用例 在终端中进入项目根目录,执行如下命令运行测试用例: ``` mvn test ``` 执行完毕后,将在 target/surefire-reports 目录下生成测试报告。 以上就是 Karate 自动化测试框架的搭建步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值