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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java pfx 证书_Java将pfx证书转换为jks[通俗易懂]

    java pfx 证书_Java将pfx证书转换为jks[通俗易懂]packagecom.yangangus.util;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.security.Key;importjava.security.KeyStore;importjava.security.cert.Certifica…

    2022年6月6日
    38
  • redux-saga_pub culture

    redux-saga_pub culture本文用以记录从调研ReduxSaga,到应用到项目中的一些收获。什么是ReduxSaga官网解释来自:https://github.com/redux-saga/redux-sagaredux-sagaisalibrarythataimstomakesideeffects(i.e.asynchronousthingslikedatafetchingand…

    2022年9月19日
    2
  • 2009年9月51CTO版三级网络技术考前压轴试题参考答案

    2009年9月51CTO版三级网络技术考前压轴试题参考答案

    2021年8月1日
    59
  • python在线音乐播放器_python实现音乐播放器「建议收藏」

    python在线音乐播放器_python实现音乐播放器「建议收藏」python是一个比较活泼的语言,它可以很快速、很方便地实现很多有意思的东西。最近,学习了一下如何使用python制作一个简单的音乐播放器,整体的效果如下图所示。所需要的导入的库tkinterostimethreadingpygame如果没有安装这个库,简单粗暴的pipinstall+库例如,我没有安装过pygame这个库,准备工作下载音乐,喜欢的歌曲,选择mp3格式这里,给大家提供一个…

    2022年6月26日
    42
  • pycharmPyCharm 2021.8.3安装激活码【永久激活】

    (pycharmPyCharm 2021.8.3安装激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~KU…

    2022年3月22日
    61
  • Python实现AI图像识别-身份证识别

    Python实现AI图像识别-身份证识别图像识别说白了就是把一张照片上面的文字进行提取,提供工作效率需求分析身份证识别主要是把一张身份证照片上面的文字信息进行提取,不用再使用人工去手动抄写了,下面给大家说的这个身份识别主要是使用python+flask+华为云OCR进行实现的。步骤申请华为云OCR接口获取token调用身份证识别接口提取身份证信息申请华为云OCR接口图像识别主要使用的就是华为云OCR平台申请的接口,申请地址为:“https://www.huaweicloud.com”。访问申请的地址后点击菜单栏中的“控制台”

    2022年7月16日
    32

发表回复

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

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