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文件的路径一样。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Dirsearch_torrentsearch下载

    Dirsearch_torrentsearch下载dirsearch下载下载网址:https://github.com/maurosoria/dirsearch下图是下载好的文件夹这样就下载好了我在使用的时候出现了下面的这个问题百度了很久也没有找到,kali也不太会用,就继续找继续找,终于????,解决办法找到了!!!是用户权限的问题!依然对dirsearch修改用户权限还是在属性->安全里面选择想要添加的用户,并允许该用户完全控制如下图…

  • 查询linux版本信息的命令_查系统版本命令

    查询linux版本信息的命令_查系统版本命令通常使用命令uname在Linux下面察看版本信息-a或–all:显示全部的信息;-m或–machine:显示电脑类型;-n或-nodename:显示在网络上的主机名称;-r或–release:显示操作系统的发行编号;-s或–sysname:显示操作系统名称;-v:显示操作系统的版本;-p或–processor:输出处理器类型或”unknown”;-i或-

  • python缩进错误「建议收藏」

    Python报错TabError:inconsistentuseoftabsandspacesinindentation平台Geany错误原因python的缩进符为四位空格,修改方法:Python报错:IndentationError:unindentdoesnotmatchanyouterindentationlevel依旧是缩进出现问题如图:缩进时四个空格一个不能少!!!…

  • idea 2021.8激活码-激活码分享

    (idea 2021.8激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • Kong Api 初体验

    Kong Api 初体验转载请标明出处:https://blog.csdn.net/forezp/article/details/79383631本文出自方志朋的博客Kong是一个可扩展的开源API层(也称为API网关或API中间件)。Kong运行在任何RESTfulAPI的前面,并通过插件扩展,它们提供超出核心平台的额外功能和服务。Kong最初是在Mashape建立的,用于为其AP…

  • 模拟城市完美布局平面图_css四大布局

    模拟城市完美布局平面图_css四大布局我们之前已经学过一些布局模型,比如说浮动,绝对定位等等,但是这些布局方式一是不够简洁,而是使用的范围确实是太窄了。flex模型拥有比较多的属性,来设置多样的布局方式,接下来我们就详细介绍各种属性对布局的改变,最后再对属性做一个汇总先看一下flex的基本模型,如下图所示:container父容器里有三个子元素flex-item。当给父容器设置display:flex;直接子元素就有布…

    2022年10月31日

发表回复

您的电子邮箱地址不会被公开。

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