Karate-让WebService的测试变的更简单![通俗易懂]

Karate-让WebService的测试变的更简单![通俗易懂]karate的github项目地址:https://github.com/intuit/karatekarate是唯一一个将API测试自动化、模拟和性能测试结合到一个统一框架当中的开源工具。除了强大的JSON和XML断言之外,你还可以并行运行测试来提高运行速度——这对于HTTPAPI测试非常的重要。karate可以轻松的构建和重用复杂的有效请求负载并动态的响应数据构建更多的请求。负载和模…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

karate的github项目地址:https://github.com/intuit/karate

karate是唯一一个将API测试自动化、模拟和性能测试结合到一个统一框架当中的开源工具。除了强大的JSON和XML断言之外,你还可以并行运行测试来提高运行速度——这对于HTTP API测试非常的重要。

karate可以轻松的构建和重用复杂的有效请求负载并动态的响应数据构建更多的请求。负载和模式验证引擎可以对两个JSON和XML文件或内容进行智能比较(这对于测试还是非常的简便的,下面会提到),甚至可以在需要时忽略动态值。

karate是基于Java8(至少是1.8.0_112或者更高的版本),可以通过Maven或者Gradle加上IDE来实现。其实说实话,用什么IDE之间的差别不大,主要是看用的是Maven还是Gradle,在笔者看来Gradle的命令行要比Maven的强大的多,但是现在很多地方用的还是Maven,所以本篇采用的依旧是maven。

1、打开idea或者ecplise创建一个maven项目,并在pom.xml中引入以下配置:

<dependencies>
        <dependency>
            <groupId>com.intuit.karate</groupId>
            <artifactId>karate-apache</artifactId>
            <version>0.9.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.intuit.karate</groupId>
            <artifactId>karate-junit4</artifactId>
            <version>0.9.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <testResources>
            <testResource>
                <directory>src/test/java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </testResource>
        </testResources>
    </build>

Jetbrains全家桶1年46,售后保障稳定

karate-apache和karate-junit4的版本目前最高的是0.9.2,引入最新的就可以了。

karate的脚本是写在扩展名为.feature的文件中,而在Maven项目中,非Java的源文件会放在单独的src/test/resources文件夹结构中,但是这里还是建议放在一起,以后项目变大的时候,可能还需要操作一些.js的数据文件,放在一起看起来更加的简洁且便于管理。

当默认的系统编码不是UTF-8的时候,可能会报错,无法正常工作,可以加入以下插件来避免:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.10</version>
        <configuration>
            <argLine>-Dfile.encoding=UTF-8</argLine>
        </configuration>
    </plugin>

2、创建一个Java启动类

package sf;

import org.junit.runner.RunWith;

import com.intuit.karate.junit4.Karate;

@RunWith(Karate.class)
public class CallAPIServiceRunning {
}

3、在Java启动类的同级目录下创建一个以.feature结尾的文件,命名最好和启动类一样,便于管理和识别。Karate脚本的语法格式大致分为以下的三个部分(特性、背景和场景):

Feature: 测试内容的简要描述

Background:
  # 这部分可写可不写
  # 这步骤是在下面每个场景运行前都会执行的
  # 这里定义的变量就相当于全局变量

Scenario: 当前场景的简要描述
  # 这个场景要执行的内容

Scenario: 另一个场景
  # 这个场景要执行的内容

4、POST请求

Feature: CallServiceAPI

  Background:
	* def Base64 = Java.type('java.util.Base64')
    * def param = read('param.json')
    * def result = read('result.json')

  Scenario: post
    Given url 'http://*****************'
    And def encoded = Base64.encoder.encodeToString('用户名:密码'.bytes)
    And header Authorization = "Basic " + encoded
    And request param
    When method post
    Then status 200
    And match response == result

这段代码是把要传入的参数放入了一个json的配置文件当中,因为参数的量很大,并且request只能传输key-value形式的数据。read()方法可以把整个的json文件读取(也能读取其它文件,诸如xml之类的)。

* def Base64 = Java.type(‘java.util.Base64’)和And def encoded = Base64.encoder.encodeToString(‘用户名:密码’.bytes)这两行主要是实现通过请求的Basic认证。

And match response == result 这一步就是对获得的json对象和预期的json对象进行比较,上面提到过karate的这个优点,能够智能的对比两个json或者xml对象,所以,我们只需要提供两个json对象即可,剩余的交给karate来做。

5、Get请求

Feature: CallServiceAPI

  Background:
	* def Base64 = Java.type('java.util.Base64')
    * def param = read('param.json')
    * def result = read('result.json')

  Scenario: html url encoded form submit - get
    Given url 'http://**************'
    When method GET
    Then status 200
	* def convertJsonResponse = function(response){ return JSON.parse(response.slice(1)) }
	* def json = convertJsonResponse(response)
    And match result == json

6、生成Html网页版的报告

点击Java启动类,运行之后会发现控制台的最后会有一个url,直接copy,并且在浏览器中打开,就能看到html版的report了。路径就和在java类的同级目录下创建了一个同名的HTML文件的路径一样。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何利用python读excel数据_python在excel应用实例

    如何利用python读excel数据_python在excel应用实例文章目录python读取excel表数据的方法:完整的程序代码python读取excel表数据的方法:首先安装Excel读取数据的库xlrd;然后获取Excel文件的位置并且读取进来;接着读取指定的行和列的内容,并将内容存储在列表中;最后运行程序即可。python读取excel表数据的方法:安装Excel读取数据的库—–xlrd直接pipinstallxlrd安装xlrd库#引入Excel库的xlrdimportxlrd获取Excel文件的位置并且读取进来#导入需要读取Exc

    2022年9月27日
    5
  • Lombok使用与踩坑

    Lombok使用与踩坑一 使用 Lombok1 在 pom 文件中引入依赖 dependency groupId org projectlombo groupId artifactId lombok artifactId optional true optional dependency

    2025年7月25日
    4
  • pycharm 中文乱码_pycharm中文字体设置

    pycharm 中文乱码_pycharm中文字体设置问题:pycarm里面的中文,没有办法正常显示原因:因为Pycharm会使用系统默认的字体,所以当系统中没有这个字体的时候,他就没法显示解决办法:sudoyum-yinstallfontconfig(安装字体库)安装完成后,在/usr/share目录就可以看到fonts和fontconfig目录了寻找中文字体(可以在windows里面找,路径:C:\Windows\Fonts)cd/usr/share/fonts&&sudomakedirchinese

    2022年8月29日
    6
  • Rabbitmq原理理解[通俗易懂]

    Rabbitmq原理理解[通俗易懂]rabbitmq特点RabbitMQ是一个由Erlang语言开发的AMQP的开源实现。AMQP:AdvancedMessageQueue,高级消息队列协议。可靠性(Reliability)灵活的路由(FlexibleRouting)消息集群(Clustering)高可用(HighlyAvailableQueues)多种协议(Multi-protocol)多语言客户端(ManyClients)管理界面(ManagementUI)跟踪机制(Tracing)插件机

    2022年6月17日
    35
  • Jmeter的正则表达式提取参数「建议收藏」

    Jmeter的正则表达式提取参数「建议收藏」1:Jmeter正则表达式提取器提取制定的值1.1:添加http请求(80端口不用写端口号)1.2:添加正则表达式提取器.表示匹配任意字符+表示匹配一个或者多个?表示匹配到结束为止PS:下面的正则表达式还可以写成province:'([^’]+)’,       表示:[^’]匹配到不是单引号’;+表示它内的多个字符1.3:添加Debugsampler(用Debug取样器可以方便tes…

    2025年10月21日
    4
  • 教你两分钟做出一个精美好用的404页面

    教你两分钟做出一个精美好用的404页面怎么快速的做好网站404跳转页面?要想做的又快又好,开源字节建议就套用精美的模板即可。总的来说就是利用404页面模板,进行修改,修改好一个404页面上传到网站根目录,然后一般在网站空间的后台直接设置选择用此文件作为404页面即可。具体利用404模板修改制作404页面流程如下:第一步获取404代码文件,下载一套404页面模板(一般一个404代码文件,和一张404图片)第二步修改文件信息,把404页面代码文件里面的链接文字等修改成适用自己的网站的信息。域名,关键字,404图片调用路径

    2022年7月27日
    10

发表回复

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

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