首页 > 其他分享 >1分钟入门接口自动化框架Karate

1分钟入门接口自动化框架Karate

时间:2023-09-07 17:13:33浏览次数:50  
标签:入门 demo 接口 Karate json 测试 import com

From: https://www.cnblogs.com/ourtest/p/10172541.html

---------------------------------------------------------------------------

介绍

在这篇文章中,我们将介绍一下开源的Web-API自动化测试框架——Karate

Karate是基于另一个BDD测试框架Cucumber来建立的,并且共用了一些相同的思想。其中之一就是使用Gherkin文件,该文件描述了被测试的功能

与Cucumber不同的是测试用例不需要用Java编写,并且被完整的描述在Gherkin文件中

通过Karate,您可以编写任何类型的Web服务端的测试脚本,并检查响应是否符合预期

Karate的验证引擎可以灵活的比较两个JSON或XML文件内容,不受空格和数据顺序的影响

有关Karate的更详细的内容,请参考Karate官方介绍

特点

1.建立在Cucumber-JVM基础上

2.可以像标准的Java工程一样运行测试并且产生报告

3.测试代码的开发不需要掌握任何的Java知识

4.即使对非编程人员,测试代码也很容易编写

环境需求

1.JDK1.8及以上

2.Maven

3.IDEA

使用

创建工程

1.打开IDEA,File|New|Project

2.选择Maven工程,点击Next

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

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

添加依赖

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

<dependencies>
<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-apache</artifactId>
<version>0.8.0</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-junit4</artifactId>
<version>0.8.0</version>
<scope>test</scope>
</dependency>

</dependencies>

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

<testResources>
<testResource>
<directory>src/test/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources>

服务端模拟

为了演示REST API,我们使用WireMock服务器

在pom.xml中添加mock服务依赖配置

<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock-standalone</artifactId>
<version>2.18.0</version>
<scope>test</scope>
</dependency>

编写一个启动服务的类

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”扩展名保存。

文件以Feature关键字开头,在同一行跟着所测试的功能名称

一个用例文件包含不同的测试场景,每个场景都以关键字Scenario开头,并且包含多个步骤。这些步骤包含关键字Given,When,Then,And和But

有关Cucumber和Gherkin结构的更多信息,请点击此处

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"}

我向大家推荐一个学习资料领取的qq群。这套视频资料详细讲解了(自动化编程,mysql调优,自动化框架使用)。

对以上测试资料,测试技术 感兴趣的朋友,欢迎加QQ群:175317069,一起学习,相互讨论。

Runner类编写

建议放在用例文件同级目录下

我们可以通过将Karate与JUnit集成来运行我们的测试

我们将使用@CucumberOptions注解指定Feature文件的具体位置

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运行测试

查看报告

在项目的target/surfire-reports目录下有TEST-demo.demo.html文件,浏览器中打开即可看到结果

持续集成

可以借助于jenkins完成自动化测试并且jenkins提供插件cucumber-reports可以展示可读性强的自动化测试报告

需要修改Runner继承KarateRunner,先引入Karate-testng依赖

<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-testng</artifactId>
<version>0.8.0</version>
</dependency>

修改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 {

}

jenkins中cucumber-reports配置请参考网络资源

jenkins配置命令行运行指令

rm -rf ${WORKSPACE}/report.json
cd /home/pateo/IdeaProjects/demo4karate
mvn test -Dtest=DemoRunner
cp report.json ${WORKSPACE}/report.json

jenkins报告展示

标签:入门,demo,接口,Karate,json,测试,import,com
From: https://www.cnblogs.com/Raul2018/p/17685493.html

相关文章

  • 【ROS2机器人入门到实战】第 十四 章 接入ROS2-MicroROS
    第十四章接入ROS2-MicroROS写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn,我是小鱼。上一章我们通过对嵌入式开发的学习......
  • 【ROS2机器人入门到实战】PIO工程结构&构建方式
    4.PIO工程结构&构建方式写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn你好,我是爱吃鱼香ROS的小鱼。上一节我们搭建好了PIO......
  • 【ROS2机器人入门到实战】SLAM技术概述
    10.3SLAM技术概述写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn小伙伴们好,上一节我们搭建好了Gazebo中的仿真环境,本节课......
  • 【ROS2机器人入门到实战】Gazebo仿真环境搭建
    7.Gazebo仿真环境搭建写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn本节我们要在Gazebo中建立一个测试的环境,其实也很简单......
  • 【ROS2机器人入门到实战】使用Nav2导航API进行导航
    4.使用Nav2导航API进行导航写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cnNav2的API其实是Nav2提供的一个Python库,通过该库......
  • 【ROS2机器人入门到实战】电机控制之正反转实验
    3.电机控制之正反转实验写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn你好,我是小鱼。前面说到通过控制对应的IO电平变换即......
  • 七天入门Python(一)
    七天入门Python(一)大家好,我是Antvictor,一个励志要成为架构师的程序员。闲话少说,接下来请和我一起进入《七天入门Python》,首先是Python安装。Python安装从Python官网找到Download下载对应的安装包,python3.6及以上即可。Python官网会根据系统默认展示对应系统的最新版本安装包,下载成......
  • 【ROS2机器人入门到实战】I2C通信实验-点亮OLED
    6.I2C通信实验-点亮OLED写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn你好,我是爱吃鱼香ROS的小鱼。本节我们就尝试直接使......
  • 写了一本适合本科生的机器学习书:《机器学习入门基础(微课版)》
    各位读者朋友们,今天我要给大家推荐一本非常实用的机器学习入门基础图书——《机器学习入门基础(微课版)》。这本书是由黄海广老师倾心打造,适合只有本科三年级数学水平以上的初学者入门,这本书已经被很多学校定为本科生教材。背景介绍本书的作者黄海广老师是一名大学教师,翻译和整理过很......
  • 用友NC service接口信息泄露漏洞
    漏洞描述用友nc有个接口可以获取数据库账户密码,不过是老版本了漏洞复现fofa语法:app="用友-UFIDA-NC"POC:/uapws/servicenuclei批量yaml文件id:yonyou_NC-uapws-server-apiinfo:name:yonyou_NC-uapws-server-apiauthor:nigoriseverity:highdescription:f......