您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

如何使用接口测试框架Karate创建一个API测试?

时间:2020-10-19 11:40:05  来源:  作者:

应用场景:在API的测试中,测试某些具体数据值,比如返回的结果是否是需求的类型,文件是否是符合且具备完整的数据结构。这些都是必须且很细致的测试工作。另外,组织、运行测试场景,以及演示测试结果这些也都使得测试人员要更加快速的找到合适的API测试方法。今天就详细地介绍如何用Karate组织、运行测试场景,以及验证Json 文件数据的正确性。

案例:如何使用接口测试框架Karate创建一个API测试?

 

  如果您想跟着以下示例操作,需要做好以下配置:

  测试框架:JAVA + Karate + Junit 5

  语言:Java, Cucumber

  IDE:Intellij IDEA

  项目类型:Maven

  Karate 项目配置

  为了能让跟着步骤操作的小伙伴们真正地运行起代码来,所以下面是有关配置的操作(注:如您已经熟悉这些配置,可以跳过。)

  1.创建一个新的Maven 项目

  2.POM配置 (这里介绍的清楚一些,有时就是因为配置没设好,脚本就是运行不起来。)

案例:如何使用接口测试框架Karate创建一个API测试?

 

  3.配置 Cucumber

  依次打开Files > Settings > Plugins : 确保cucumber for Java 和Gherkin 插件已经安装成功。

案例:如何使用接口测试框架Karate创建一个API测试?

 

  创建 Karate 测试用例

  1.创建测试场景 (feature 文件)

  如下图显示,本示例中country-get.feature 文件前面有一个绿色的图标,这就是cucumber feature 文件的标识。

案例:如何使用接口测试框架Karate创建一个API测试?

 

  2.编写测试场景

  背景 Background: 本示例中,url 和 header 是所有测试用例中共用的一部分,所以就把它们写在了Background中。

案例:如何使用接口测试框架Karate创建一个API测试?

 

  用例一:测试get method 并验证响应代码,文件长度以及第一个字段值 (期待成功)

  文件长度:这里实际是指返回的一个json数组里包含了多个.json 文件,比如本实返回了250个文件

案例:如何使用接口测试框架Karate创建一个API测试?

 

  @Value: @ 注释 是测试人员组织测试用例时非常好用的小工具。我们可以一组类似的测试用例用 相同的 @ 把它它们标识出来,这样运行的时候根据需求也可以分组执行。

  Given: path 从下图中可以看出,path 只是后面的一部分而已,当运行的时候,会和Background 中的url自动地连接在一起。 相当于https://restcountries.eu/rest/v2/all

  When: 本例中我们测试 get 请求

  Then, And : 这是本例中要验证的结果,期待请求发表以后,会收到成功的返回代码: 200, 并且包含有 250 文件,同时第一个.json文件的第一层nativeName 要等于验证的字符串。(注:在第二截图里显示了实际返回的nativeName 值)

案例:如何使用接口测试框架Karate创建一个API测试?

 


案例:如何使用接口测试框架Karate创建一个API测试?

 

  用例二 :测试带有参数的get method 并验证响应代码,文件长度以及国家名称 (期待成功)

  本例中多加了一个参数:相当于请求 https://restcountries.eu/rest/v2/name/aruba?fullText=true

案例:如何使用接口测试框架Karate创建一个API测试?

 

  

  用例三:测试带有参数的get method 并验证响应代码和返回的文件内容 (期待失败)

  本示例是测试当请求有误时,系统的响应信息。和前一个示例不同的是,把国家的名字给错了,请求的url:https://restcountries.eu/rest/v2/name/arubaq?fullText=true

  在验证时,第一个match 中期待返回的status 是一整型, 第二match中期待返回的status是一个字符型。根据实际返回信息 (如下图二), status应该是一个整型。

  注: 这个用例中的@Contents 与前二个示例不同. (在运行文件中,您能切身体会有什么效果了。)

案例:如何使用接口测试框架Karate创建一个API测试?

 


案例:如何使用接口测试框架Karate创建一个API测试?

 

  创建运行文件

  如下图所示,这里创建5 种运行方式 ( @Karate.Test)。下面我们依次介绍如下:

  ·testTags(): 运行同一文件夹里country-get.feature 里面标记是@Value的测试场景

  ·testSingle(): 运行同一文件夹里country-get.feature 里面所有的测试场景

  ·testFullPath(): 指定运行feature 文件夹里country-get.feature 里面标记是@Contents 的测试场景

  ·testPost(): 想运行country-post.feature文件中的所有测试场景 (注:这里是一种错误的写法,文件运行不起来,因为当前文件夹下没有country-post.feature 文件)

  ·testinFeaturePost(): 指定运行featurepost 文件夹里country-post.feature文件中的所有测试场景

  ·testAll(): 指定运行同一文件夹里所有feature文件中的所有测试场景

  现在各位朋友清楚了在feature文件中,各个场景里@的不同意义了吧。同时写这么多运行方式也是想让大家更加明了当你有不同的需求时,如何快捷地运行你的测试场景。

案例:如何使用接口测试框架Karate创建一个API测试?

 

  脚本运行

  1.运行在IDE

  右键点击CountryRunnerTest文件,在弹出的菜单列表中点击 Run CountryRunnerTest。 收割的时候到了,快看一下结果吧。

  如下图(运行结果一)所示,从左边的窗口中, 可以看出

  1) testAll() 运行了country-get.feature 和sample.feature 两个文件。country-get中显示运行了3个场景: 2 个成功,1个失败。

  2)失败的场景结果中: 我们设计去验证status 应该是整型而不是字符型,右边窗口显示了指示出清晰的错误原因

  3)testTags(): 只运行了两个成功的场景 @Value

  4)testFullPath(): 只运了失败的场景 @Contents

  运行结果一:

案例:如何使用接口测试框架Karate创建一个API测试?

 

  如下图(运行结果二)所示,从左边的窗口中, 可以看出

  1)testTagsPost(): 没有运行,因为没有找到对应feature 文件或场景

  2)testTagsPostinFeaturePost(): 运行正确

  运行结果二:

案例:如何使用接口测试框架Karate创建一个API测试?

 

  2.运行通过命令行

  ·指定运行某一个方法

  执行命令: mvn test -Dtest=CountryRunnerTest#testFullPath

  CountryRunnerTest: java class 文件名

  #testFullPath: 指定运行测试 (注:这里就是CountryRunnerTest文件中的运行方法)

案例:如何使用接口测试框架Karate创建一个API测试?

 

  ·运行单个文件

  移除其它的运行方法

  执行命令: mvn test (注:当用这个命令时,运行的文件名必须是*Test.java)

案例:如何使用接口测试框架Karate创建一个API测试?

 

  3.并行运行Parallel Run

  ·创建CountryPallelTest.java 文件。 如下图所示,classpath:feature 是指当前的package feature, parallel: 示例中有2 thread to run country-get.feature and sample.feature (注: 把先前CountryRunnerTest文件名改为CountryRunner)

  ·执行 mvn test

案例:如何使用接口测试框架Karate创建一个API测试?

 

  ·如下图示,结果中显示 threads: 2, passed: 2 , failed:1

  (注: 这里的两个feature 文件运行了1个,ignored: 1, 是因为sample.feature 是一个空文件)

案例:如何使用接口测试框架Karate创建一个API测试?

 

  4.如果您在运行时遇到错误信息: The forked VM terminated without properly saying goodbye. VM crash or System.exit called? 可以执行: mvn clean install

  报告测试结果

  1.Karate 报表

  以执行mvn test -Dtest=CountryRunnerTest#testFullPath 为例,运行完毕以后,target文件夹会自动生成,展开target > surefire-reports文件夹,找到feature.country-get.html,右键点击,在显示的菜单列表中点击Open in Browser ,选择您想要找开文件的browser。

案例:如何使用接口测试框架Karate创建一个API测试?

 

  如下图所示,karate 的报告中显示出很明确请求连接url与验证失败的原因。

案例:如何使用接口测试框架Karate创建一个API测试?

 

  2.并行运行报告

  从产生的目录结构中,可以看出并行运行的结果与单个运行结果的报表是不同:

案例:如何使用接口测试框架Karate创建一个API测试?

 

  Timeline.html中很明确显示了3个测试场景在2 threads 的分配和运行状况。

案例:如何使用接口测试框架Karate创建一个API测试?

 


邀你进群❤一起学习交流、听免费直播、答疑解惑

想要成为优秀的测试架构师,找到高薪工作,首先你得从人群中冒出来,要想冒出来,你就必须做到与众不同,要做到与众不同,你就要会得更多!

成为技术大牛梦想虽然很美好,但是要付出很多,都需要花费时间、金钱和精力,测试理论知识、缺陷管理规范、测试流程、设计及编写测试用例这些都是必备的技能。

我期待对测试感兴趣的人,都能成为软件测试生力军~

没有过不去的火焰山,没有破不掉的技术难题,只要你敢,肯下功夫,都会取得最终的胜利。只要你想学习,完全可以参照老师的学习路线图来执行哦。



Tags:Karate   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
应用场景:在API的测试中,测试某些具体数据值,比如返回的结果是否是需求的类型,文件是否是符合且具备完整的数据结构。这些都是必须且很细致的测试工作。另外,组织、运行测试场景,...【详细内容】
2020-10-19  Tags: Karate  点击:(244)  评论:(0)  加入收藏
▌简易百科推荐
近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让 Flask 配合 Flasgger, 所以写了篇 Flask 应用集成 Swagger UI 。然而不断的 Google 过程中偶然间发现了...【详细内容】
2021-12-23  Python阿杰    Tags:FastAPI   点击:(6)  评论:(0)  加入收藏
文章目录1、Quartz1.1 引入依赖<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version></dependency>...【详细内容】
2021-12-22  java老人头    Tags:框架   点击:(11)  评论:(0)  加入收藏
今天来梳理下 Spring 的整体脉络啦,为后面的文章做个铺垫~后面几篇文章应该会讲讲这些内容啦 Spring AOP 插件 (了好久都忘了 ) 分享下 4ye 在项目中利用 AOP + MybatisPlus 对...【详细内容】
2021-12-07  Java4ye    Tags:Spring   点击:(14)  评论:(0)  加入收藏
&emsp;前面通过入门案例介绍,我们发现在SpringSecurity中如果我们没有使用自定义的登录界面,那么SpringSecurity会给我们提供一个系统登录界面。但真实项目中我们一般都会使用...【详细内容】
2021-12-06  波哥带你学Java    Tags:SpringSecurity   点击:(18)  评论:(0)  加入收藏
React 简介 React 基本使用<div id="test"></div><script type="text/javascript" src="../js/react.development.js"></script><script type="text/javascript" src="../js...【详细内容】
2021-11-30  清闲的帆船先生    Tags:框架   点击:(19)  评论:(0)  加入收藏
流水线(Pipeline)是把一个重复的过程分解为若干个子过程,使每个子过程与其他子过程并行进行的技术。本文主要介绍了诞生于云原生时代的流水线框架 Argo。 什么是流水线?在计算机...【详细内容】
2021-11-30  叼着猫的鱼    Tags:框架   点击:(21)  评论:(0)  加入收藏
TKinterThinter 是标准的python包,你可以在linx,macos,windows上使用它,你不需要安装它,因为它是python自带的扩展包。 它采用TCL的控制接口,你可以非常方便地写出图形界面,如...【详细内容】
2021-11-30    梦回故里归来  Tags:框架   点击:(26)  评论:(0)  加入收藏
前言项目中的配置文件会有密码的存在,例如数据库的密码、邮箱的密码、FTP的密码等。配置的密码以明文的方式暴露,并不是一种安全的方式,特别是大型项目的生产环境中,因为配置文...【详细内容】
2021-11-17  充满元气的java爱好者  博客园  Tags:SpringBoot   点击:(25)  评论:(0)  加入收藏
一、搭建环境1、创建数据库表和表结构create table account(id INT identity(1,1) primary key,name varchar(20),[money] DECIMAL2、创建maven的工程SSM,在pom.xml文件引入...【详细内容】
2021-11-11  AT小白在线中  搜狐号  Tags:开发框架   点击:(29)  评论:(0)  加入收藏
SpringBoot开发的物联网通信平台系统项目功能模块 功能 说明 MQTT 1.SSL支持 2.集群化部署时暂不支持retain&will类型消 UDP ...【详细内容】
2021-11-05  小程序建站    Tags:SpringBoot   点击:(55)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条