本教程是使用Karate框架进行API测试的介绍。 了解Karate测试脚本的结构和建立第一个测试脚本的步骤:

API是一个缩写,代表应用编程接口。 简单地说,我们可以把它定义为一个允许应用程序之间进行通信的软件中介。

我们需要API测试,因为:

  • 结果公布得更快,因此不再需要等待看API是否工作正常。
  • 随着响应速度的加快,这些API的部署也变得更快,因此可以实现快速周转。
  • 早期的故障检测,甚至在应用程序的用户界面创建之前,使我们能够减轻风险和纠正故障。
  • 在较短的时间内实现大规模的交付。

为了能够进行API测试,我们在市场上有各种工具,如Postman、Mocha和Chai。 这些工具在测试API方面表现出良好的效果和有效的使用,但是,这些工具在很大程度上受到代码的影响。 为了能够使用这些工具,人们必须有良好的技术和熟悉编程语言。

空手道框架漂亮地解决了其前面的软件工具的这个问题。

什么是空手道框架

空手道? 让我们谈谈空手道,是来自日本的那种吗? 你认为呢? 可能是伟大的李小龙在空闲时间里开发了这个。

尽管我们想深入研究空手道的有趣根源,但现在我们还是要谈谈 空手道工具 编写的 彼得-托马斯 这是为API测试人员提供帮助的伟大工具之一。

空手道框架采用Cucumber风格编写程序,它遵循BDD方法。 语法对非程序员来说很容易理解。 而且这个框架是唯一将API自动化和性能测试结合到一个独立工具中的API测试工具。

它为用户提供了并行执行测试案例的能力,并执行JSON & XML检查。

通过这些信息,可以推断出某些关键点,以进一步详细了解空手道工具:

  • Karate是一个BDD测试框架,而不是一个TDD。
  • 它的设计对非程序员来说很容易。 这一特点是一个游戏规则的改变,因为它允许许多人更多地使用和访问,无论他们的技术背景或能力如何。
  • 它利用Cucumber特征文件和Gherkins语言来编写测试,非常容易理解。

所有这些功能使其成为当今最有利的自动化工具之一。

空手道的历史框架

创建者:' 彼得-托马斯的 在2017年,这个软件的目的是让每个人都能随时使用测试功能。 它是用Java编写的,大多数人期望它的文件也是用同样的语言,然而,幸运的是,情况并非如此。

相反,它使用Gherkins文件,这是它与Cucumber框架关系的结果。 自动化软件是Cucumber的扩展,因此在其操作中继承了对Gherkins文件的使用。 两者之间最大的区别是Karate在测试时不使用Java,但Cucumber使用。

这就是为什么它迎合非程序员的原因,因为Gherkins的语法是超级可读和全面的。 这就是Karate最适合和推荐进入自动化API测试世界的原因。

以下是Karate测试框架的一些特点:

  • 利用易于理解的小黄瓜语言。
  • 它不需要像Java那样的技术编程知识。
  • 它是基于流行的黄瓜标准。
  • 易于创建一个框架。
  • 平行测试是由Karate本身提供的核心功能,因此我们不需要依赖 Maven, Gradle ,等等。
  • 用于调试测试的用户界面。
  • 从另一个文件中调用一个特征文件。
  • 提供对内部构建的数据驱动测试的支持,因此不需要依赖外部框架。
  • 内置Native Rest报告。 另外,它可以与Cucumber集成,以获得更好的UI报告和更清晰的内容。
  • 为不同测试环境(QA、阶段、Prod、Pre-Prod)的切换配置提供内部支持。
  • 对CI/CD整合的无缝支持,可以说是非常有用。
  • 能够处理各种HTTP调用:
    • 支持Web Socket
    • SOAP请求
    • HTTP
    • 浏览器cookie处理
    • HTTPS
    • HTML-表单数据
    • XML请求

对比空手道与休息保障

放心吧 : 这是一个基于Java的库,用于测试REST服务。 它使用Java语言编写代码行。 它有助于测试许多请求类别,从而进一步验证不同的业务逻辑组合。

空手道框架 : 一个基于Cucumber/Gherkins的工具,用于测试SOAP & REST服务。

下表列举了Rest-Assured & Karate Framework之间的几个更突出的区别:

编号 基础 空手道框架 REST-Assured
1 语言 它使用了黄瓜和小黄瓜的组合 它使用了Java语言
2 代码大小 通常情况下,代码行数较少,因为它遵循类似Cucumber的结构 代码行数较多,因为它涉及到Java语言的使用。
3 需要的技术知识 非程序员可以很容易地编写小黄瓜代码 编写Java代码需要技术知识
4 数据驱动的测试 需要利用TestNG或类似的工具来支持。 内部标签可用于支持数据测试
5 它是否提供SOAP调用支持 是的,它确实提供了 它只与一个REST请求有关
6 平行测试 是的,并行测试也很容易得到并行报告生成的支持。 在很大程度上不是,虽然有人尝试过这样做,但失败率比成功率高。
7 报告 它提供内部报告,因此不需要依赖外部插件。 我们甚至可以将其与Cucumber报告插件整合,以获得更好的用户界面。 需要依赖外部插件,如Junit、TestNG
8 对外部数据的CSV支持 是的,从Karate 0.9.0开始 不,必须使用Java代码或库
9 网络用户界面自动化 是的,从Karate 0.9.5开始,Web-UI自动化是可能的。 不,它不被支持
10 样品GET 给定参数val1='name1'

而param val2 = 'name2'。

和路径'samelocation'。

当方法得到

然后匹配响应包含'OKAY'。

given()。

param("val1", "name1")。

param("val2", "name2")。

when().

get("/some/location")。

then()。

body(containsString("OKAY"));

因此,正如上述差异所证明的那样,可以说空手道是任何人都可以做的最简单的事情之一。

使用空手道框架工作所需的工具

现在,既然我们已经掌握了关于Karate框架的基本知识,让我们看看建立Karate环境所需的过程和工具。

#1)日蚀

Eclipse是一个用于计算机编程领域的集成开发环境。 它主要用于Java编程。 如前所述,Karate是用Java编写的,所以Eclipse成为API测试软件的首选IDE就更有意义了。 另一个原因是它是一个开源工具,这也是选择这个工具的一个相当有力的理由。

请注意: 我们甚至可以使用IntelliJ、Visual Studio和市场上的其他不同的编辑器。

#2)Maven

这是一个构建自动化工具,主要用于构建Java项目。 它是设置Karate环境和编写代码的一种方式。 要用Maven的要求设置你的Eclipse,你可以点击这里进行Maven安装。

在Maven中工作时,使用有助于支持Karate框架的Maven依赖项。

以下依赖关系将在pom.xml中与Maven一起使用。

 com.intuit.karate karate-apache 0.9.5 test com.intuit.karate karate-junit4 0.9.5 test 

请注意: 最新版本可能会在Maven仓库中出现。

#3) Gradle

Gradle是Maven的替代品,可以同等使用。 它们有相同之处,也有不同之处,但同样可以用于为我们的Karate代码建立环境。

它更容易使用,很灵活,当我们的应用程序有一些模块化和管理要求,有一堆插件时,建议使用它。 Gradle的设置代码看起来会是这样的、

 testCompile 'com.intuit.karate:karate-junit4:0.6.0' testCompile 'com.intuit.karate:karate-apache:0.6.0'。 

请注意: 你可以使用 MAVEN 档次。

#4) 在你的系统中设置Java环境

需要设置JDK和JRE环境以开始使用Karate Framework脚本。

空手道测试脚本的结构

一个Karate测试脚本因拥有".feature "扩展名而闻名。 这个属性是从Cucumber继承的。 以Java惯例组织文件也同样被允许。 你可以根据Java包惯例自由组织你的文件。

然而,Maven指南规定,非Java文件的存储应单独进行。 它们被放在一个 src/test/resources 结构。 而Java文件则保存在 src/main/java .

但按照Karate框架的创建者的说法,他们坚信我们应该将Java和非Java文件并排保存。 按照他们的说法,如果将*.java和*.feature文件放在一起,比按照标准的Maven结构来查找要容易得多。

这可以通过调整你的pom.xml来轻松实现(对于Maven):

 src/test/java **/*.java ... 

以下是《空手道框架》的一般结构概要:

现在,由于这个Karate框架使用的是Runner文件,在Cucumber中也需要运行特征文件,所以大部分的写作将遵循Cucumber标准。

但是,与Cucumber不同的是,这些步骤在Karate中不需要明确的定义,而这又增强了操作的灵活性和便利性。 我们不需要像遵循Cucumber框架时通常必须添加的额外胶水。

跑步者 "类在大多数情况下被命名为 TestRunner.java。

然后TestRunner.java文件将采取以下形式:

 import com.intuit.karate.junit4.Karate; import org.junit.runner.RunWith; @RunWith(Karate.class) public class TestRunner { } 

而谈及 .功能 文件,它包含了需要测试的所有测试场景,以确保API按照预期要求工作。

一个普通的*.feature文件看起来如下图所示:

 特点:获取用户详细信息 场景:测试获取用户详细信息的调用 给定的URL '//reqres.in/api/users/2' 当方法为GET时,状态为200 

创建第一个基本的空手道测试脚本

本节将帮助你开始创建你的第一个测试脚本,这将有助于你以Karate框架的形式转换API。

在我们编写基本的Karate测试脚本之前,请在你的机器上安装以下必要条件:

  • Eclipse IDE
  • Maven,设置适当的Maven路径。
  • JDK & JRE。 设置适当的路径。

让我们来看看这一步步的方法:

#1) 创建一个新的 MAVEN Eclipse编辑器中的项目

  • 开放的Eclipse
  • 点击 "文件"。 选择 "新项目"。

  • 选择Maven项目

  • 选择工作区的位置。
  • 选择 "原型"(通常我们选择" Maven-archetype-quickstart 1.1 "用于简单的Maven项目)。
  • 提供组ID&;工件ID(在我们的例子中我们使用了以下值)。
    • 集团ID : 空手道
    • 神器ID: 空手道测试脚本示例
  • 单击 "完成 "以完成设置。

#2) 一旦创建,现在你将能够在项目资源管理器窗口中看到以下结构。

#3) 包括你所有的依赖性。

我们的第一步,在设置之后,我们将采取以下措施 包括所有的依赖性 我们将在POM.xml中保留所有的标签(假设你已经知道POM.xml的用法)。

  • 打开POM.xml,在依赖标签下复制以下代码并保存文件。
 com.intuit.karate karate-apache 0.9.5 test com.intuit.karate karate-junit4 0.9.5 test 

点击这里查看资料。

#4) 让我们集思广益,在这个空手道基本测试脚本中我们要测试什么。

情景:

我们将用这个URL测试一个API。

路径: api/users/2

方法: 争取

而我们需要验证的是 , 请求是否返回一个 成功代码 (200) 或不。

简单地说,我们只是要测试一个样本API,看看它是否被成功执行。

请注意: 我们采取的是一个可供测试的API样本。 你可以选择任何PATH或者可以参考你的API。

点击这里查看资料。

#5) 现在我们的下一步将是创建一个 .功能 文件。

正如在导言部分所讨论的, .特征文件 在这个文件中,我们将写出执行API测试时需要执行的测试方案,这是由Cucumber继承的属性。

  • 转到文件夹 src/test/java 在你的项目中。

  • 右键单击它并创建一个新的文件 -- userDetails.feature。 然后点击 "完成 "按钮。

现在你会看到文件夹下有以下文件 src/test/java

ǞǞǞ 绿颜色的图标 类似于 .特征 fi 我们刚刚创建的Cucumber中的le。

  • 一旦该文件被创建,现在我们将编写我们的测试方案,将在下一节讨论。

#6) 既然我们有了这个场景和空白. 特征 文件准备好了,现在让我们开始编写我们的第一个脚本。 让我们开始编码

在我们在第5步创建的userDetails.feature文件中写下以下一行代码:

 特点:获取用户详细信息 场景:测试获取用户详细信息的调用 给定的URL '//reqres.in/api/users/2' 当方法为GET时,状态为200 

让我们试着理解写在上述文件中的组件:

  • 特点: 关键字解释了我们正在测试的功能的名称。
  • 背景: 这是一个可选的部分,被视为先决条件部分。 这可以用来定义测试API所需的全部内容。 它包含 HEADER, URL & PARAM 选项。
  • 情景: 你将看到的每个特征文件都至少有一个特征(尽管它可以给 多个 它是对测试案例的描述。
  • 鉴于: 它是在执行任何其他测试步骤之前需要执行的步骤。 它是一个必须执行的动作。
  • 什么时候: 它规定了执行下一个测试步骤所应满足的条件。
  • 然后: 它告诉我们,万一发生了《圣经》中提到的情况,应该怎么办? 是满足的。

请注意: 上述所有关键词都来自Gherkins语言。 这些是使用Cucumber编写测试脚本的标准方式。

还有一些在特征文件中使用的词是:

  • 200: 这是我们期待的状态/响应代码(点击这里查看状态代码列表)。
  • 获取: 它是像POST、PUT等的API方法。

我们希望这个解释对你来说很容易理解。 现在你将能够联系到上述文件中到底写了什么。

现在我们需要创建一个TestRunner.java文件

正如上节所解释的,Cucumber需要一个Runner文件,它将被要求执行 .功能 文件,其中包含测试方案。

  • 转到文件夹 src/test/java 在你的项目中

  • 右击它并创建一个新的Java文件: TestRunner.java
  • 一旦文件被创建、 在其下放置以下几行代码:
 import org.junit.runner.RunWith; import com.intuit.karate.junit4.Karate; @RunWith(Karate.class) public class TestRunner { } 
  • Test Runner是现在将被执行的文件,以执行在步骤5下编写的所需场景。

#7) 现在我们已经准备好了这两个文件 测试程序.Java userDeatils.feature。 留给我们的唯一任务是 运行 的脚本。

  • 转到TestRunner.java文件,右键点击该文件,如下图所示。

  • 选择运行方式 -> Junit测试
  • 现在,一旦选定,你将开始观察到测试案例现在已经开始了。
  • 等待测试脚本的执行,一旦完成,你将在你的窗口看到如下图所示的东西。

  • 最后,我们可以说,我们已经成功地创建了我们的第一个基本的 测试脚本 使用 空手道框架。

#8) 最后,Karate框架还为已经执行的程序提供了一个HTML报告演示。

  • 进入目标文件夹 -> surefire-reports-> 这里你会看到你的HTML报告,你可以打开。

** 我们还建议你使用Chrome浏览器打开同样的内容,以获得更好的外观和感觉。

  • 以下HTML报告将显示给你,描述了 情景& 测试 在上述情况下,已经执行了:

总结

在本教程中,我们讨论了API测试、市场上可用的不同测试工具,以及Karate Framework与同类工具相比如何成为更好的选择。

我们按照循序渐进的方式来创建我们的第一个基本测试脚本。 我们首先创建了一个基本的 Eclipse IDE中的Maven项目 创建一个.feature文件,其中包含所有的测试场景和一个Runner文件来执行.feature文件中提到的测试案例。

在多个步骤结束时,我们可以看到测试结果的执行报告。

我们希望,这个教程对初学者学习如何使用Karate框架建立他们的第一个测试脚本并进行API测试是有帮助的。 这个详细的分步方法是在API上运行和执行各种测试的绝佳方式。

NEXT>>;

滚动到顶部