接口自动化测试框架Karate入门

接口自动化测试框架Karate入门介绍在这篇文章中 我们将介绍一下开源的 Web API 自动化测试框架 KarateKarate 是基于另一个 BDD 测试框架 Cucumber 来建立的 并且共用了一些相同的思想 其中之一就是使用 Gherkin 文件 该文件描述了被测试的功能与 Cucumber 不同的是测试用例不需要用 Java 编写 并且被完整的描述在 Gherkin 文件中通过 Karate 您可以编写任何类型的 Web 服务端的测试脚本 并检查响应是否符合预期 Karate 的验证引擎可以灵活的比较两个 JSON 或 XML 文件内容 不受空格和数据顺序的影响

介绍

特点

  1. 建立在Cucumber-JVM基础上
  2. 可以像标准的Java工程一样运行测试并且产生报告
  3. 测试代码的开发不需要掌握任何的Java知识
  4. 即使对非编程人员,测试代码也很容易编写

环境需求

  • JDK1.8及以上
  • Maven
  • IDEA

使用

创建工程

  1. 打开IDEA,File|New|Project
    新建工程

  2. 选择Maven工程,点击Next
    选择Maven

  3. 输入Maven基本信息,点击Next
    输入基本信息

  4. 输入工程名称和存放路径,点击Finish
    工程目录结构

添加依赖

要在Maven项目中使用Karate,需要将karate-apache依赖项添加到pom.xml,如果实现JUnit测试还需要添加karate-junit4依赖

 
   
    
    
      com.intuit.karate 
     
    
      karate-apache 
     
    
      0.8.0 
     
    
      test 
     
    
    
    
      com.intuit.karate 
     
    
      karate-junit4 
     
    
      0.8.0 
     
    
      test 
     
    
   

设置测试资源文件目录,建议测试用例文件和java文件放在同一个目录下,遇到庞大的工程的时候方便管理,不必在文件夹src/test/java和src/test/resources文件夹之间切换,可以在pom.xml的标签中添加一下设置

 
   
    
    
      src/test/java 
     
     
     
       /*.java 
      
     
    
   

服务端模拟

 
   
   
     com.github.tomakehurst 
    
   
     wiremock-standalone 
    
   
     2.18.0 
    
   
     test 
    
   

编写一个启动服务的类

package server; import com.github.tomakehurst.wiremock.WireMockServer; import static com.github.tomakehurst.wiremock.client.WireMock.*; public class StartServer { 
    private static WireMockServer wireMockServer = new WireMockServer(8080); public static void startServer(){ 
    wireMockServer.start(); stubFor( get(urlEqualTo("/user/get")) .willReturn(aResponse() .withStatus(200) .withHeader("Content-Type", "application/json") .withBody("{ \"id\": \"1234\", name: \"John Smith\" }"))); stubFor( post(urlEqualTo("/user/create")) .withHeader("content-type", equalTo("application/json")) .withRequestBody(containing("id")) .willReturn(aResponse() .withStatus(200) .withHeader("Content-Type", "application/json") .withBody("{ \"id\": \"1234\", name: \"John Smith\" }"))); } public static void main(String... args){ 
    startServer(); } } 

用例文件编写

Feature: Learn How to use Karate for testing. Scenario: Testing valid GET endpoint Given url 'http://localhost:8080/user/get' When method GET Then status 200 Scenario: Testing the exact response of a GET endpoint Given url 'http://localhost:8080/user/get' When method GET Then status 200 And match $ == {id:"1234", name:"John Smith"} Scenario: Testing that GET response contains specific field Given url 'http://localhost:8080/user/get' When method GET Then status 200 And match $ contains {id:"1234"} 

Runner类编写

package demo; import com.intuit.karate.junit4.Karate; import cucumber.api.CucumberOptions; import org.junit.runner.RunWith; @RunWith(Karate.class) @CucumberOptions(features = "classpath:demo/demo.feature") public class DemoRunner { 
    } 

运行用例

  1. 先启动服务
    右击StartServer类选择Run StartServer.main()启动服务

  2. 运行用例
    右击DemoRunner类选择Run DemoRunner运行测试
    用例运行结果




查看报告

持续集成

            com.intuit.karate             karate-testng             0.8.0        

修改DemoRunner,注意配置CucumberOptions,要产生json格式的报告,cucumber-reports插件会去解析该文件并生成报告

package demo; import com.intuit.karate.junit4.Karate; import com.intuit.karate.testng.KarateRunner; import cucumber.api.CucumberOptions; import org.junit.runner.RunWith; @CucumberOptions(features = "classpath:demo/demo.feature",format={ 
   "pretty","html:reports","json:report.json"}) public class DemoRunner extends KarateRunner { 
    } 

接口自动化测试框架Karate入门

jenkins报告展示

接口自动化测试框架Karate入门

代码参考地址: https://github.com/ouguangqian/demo4Karate

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224321.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午12:12
下一篇 2026年3月17日 下午12:12


相关推荐

  • find命令的用法_find命令查找文件

    find命令的用法_find命令查找文件find命令——文件或目录查找而且可以直接对查找结果使用命令。find 查找范围    查找条件                        -name                按名称查找                              -maxdepth     查看多深的文件,不能超过所限制的目录下的内容                   …

    2022年10月14日
    5
  • Linux虚拟机重启_linux虚拟机怎么关机

    Linux虚拟机重启_linux虚拟机怎么关机一、Linux的五个重启命令1、shutdown2、poweroff3、init4、reboot5、halt二、五个重启命令的具体说明shutdownreboot在linux下一些常用的关机/重启命令有shutdown、halt、reboot、及init,它们都可以达到重启系统的目的,但每个命令的内部工作过程是不同的,通过本文的介绍,希望你可以更加灵活的运用各种关机命令。1.shutdownsh…

    2022年10月10日
    5
  • 数据泄露解决方案_gta5数据泄露做完了怎么办

    数据泄露解决方案_gta5数据泄露做完了怎么办项目配置不当引起的数据泄露问题,看冰河如何带你解决这类问题,强烈建议收藏!!

    2026年1月22日
    6
  • Vue实现文件上传和文件下载

    Vue实现文件上传和文件下载文件下载:文件下载通常有几种方法1.通过url下载2.location.href3.form提交直接下载4.HTML5a.download结合blob对象进行下载第一种方式:第一种方法是前后端的接口只给了一个API请求:前端第一个实现是使用a标签,第二种方式:这个方法是直接把DataURLs或者BlogURLs传到浏览器地址中触发下载。有两种…

    2022年7月15日
    28
  • linux重启tomcat进程,Linux系统重启tomcat服务的方法详解「建议收藏」

    Linux系统下tomcat服务的重启需要通过命令来解决。下面由学习啦小编为大家整理了Linux系统重启tomcat服务的方法详解,希望对大家有帮助!Linux系统重启tomcat服务的方法详解一在Linux系统下,重启Tomcat使用命令操作的!首先,进入Tomcat下的bin目录cd/usr/local/tomcat/bin使用Tomcat关闭命令./shutdown.sh查看Tomcat是…

    2022年4月7日
    92
  • 卡尔曼滤波、扩展卡尔曼滤波、无迹卡尔曼滤波以及粒子滤波原理

    卡尔曼滤波、扩展卡尔曼滤波、无迹卡尔曼滤波以及粒子滤波原理所有滤波问题其实都是求感兴趣的状态的后验概率分布,只是由于针对特定条件的不同,可通过求解析解获得后验概率(KF、EKF、UKF),也可通过大数统计平均求期望的方法来获得后验概率(粒子滤波)。KF、EKF、UKF定义KF、EKF、UKF都是一个隐马尔科夫模型与贝叶斯定理的联合实现。是通过观测信息及状态转移及观测模型对状态进行光滑、滤波及预测的方法。而KF、EKF及UKF的滤波问题都…

    2022年6月17日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号