1分钟入门接口自动化框架Karate
介绍
在这篇文章中,我们将介绍一下开源的Web-API自动化测试框架——Karate
Karate是基于另一个BDD测试框架Cucumber来建立的,并且共用了一些相同的思想。其中之一就是使用Gherkin文件,该文件描述了被测试的功能
与Cucumber不同的是测试用例不需要用Java编写,并且被完整的描述在Gherkin文件中
通过Karate,您可以编写任何类型的Web服务端的测试脚本,并检查响应是否符合预期
Karate的验证引擎可以灵活的比较两个JSON或XML文件内容,不受空格和数据顺序的影响
有关Karate的更详细的内容,请参考Karate官方介绍
特点
- 建立在Cucumber-JVM基础上
- 可以像标准的Java工程一样运行测试并且产生报告
- 测试代码的开发不需要掌握任何的Java知识
- 即使对非编程人员,测试代码也很容易编写
环境需求
- JDK1.8及以上
- Maven
- IDEA
使用
创建工程
1.打开IDEA,File|New|Project
2.选择Maven工程,点击Next
3.输入Maven基本信息,点击Next
4.输入工程名称和存放路径,点击Finish
添加依赖
要在Maven项目中使用Karate,需要将karate-apache依赖项添加到pom.xml,如果实现JUnit测试还需要添加karate-junit4依赖
<dependencies> <dependency> </dependencies> |
设置测试资源文件目录,建议测试用例文件和java文件放在同一个目录下,遇到庞大的工程的时候方便管理,不必在文件夹src/test/java和src/test/resources文件夹之间切换,可以在pom.xml的
<testResources> |
服务端模拟
为了演示REST API,我们使用WireMock服务器
在pom.xml中添加mock服务依赖配置
<dependency> |
编写一个启动服务的类
package server; import com.github.tomakehurst.wiremock.WireMockServer; import static com.github.tomakehurst.wiremock.client.WireMock.*; public class StartServer { private static WireMockServer wireMockServer = new WireMockServer(8080); public static void startServer(){ stubFor( stubFor( } public static void main(String... args){ |
用例文件编写
一个用例文件以“ .feature”扩展名保存。
文件以Feature关键字开头,在同一行跟着所测试的功能名称
一个用例文件包含不同的测试场景,每个场景都以关键字Scenario开头,并且包含多个步骤。这些步骤包含关键字Given,When,Then,And和But
有关Cucumber和Gherkin结构的更多信息,请点击此处
Feature: Learn How to use Karate for testing. Scenario: Testing valid GET endpoint Given url 'http://localhost:8080/user/get' Scenario: Testing the exact response of a GET endpoint Given url 'http://localhost:8080/user/get' Scenario: Testing that GET response contains specific field Given url 'http://localhost:8080/user/get' |
我向大家推荐一个学习资料领取的qq群。这套视频资料详细讲解了(自动化编程,mysql调优,自动化框架使用)。
对以上测试资料,测试技术 感兴趣的朋友,欢迎加QQ群:175317069,一起学习,相互讨论。
Runner类编写
建议放在用例文件同级目录下
我们可以通过将Karate与JUnit集成来运行我们的测试
我们将使用@CucumberOptions注解指定Feature文件的具体位置
package demo; import com.intuit.karate.junit4.Karate; @RunWith(Karate.class) public class DemoRunner { } |
运行用例
1.先启动服务
右击StartServer类选择Run StartServer.main()启动服务
2.运行用例
右击DemoRunner类选择Run DemoRunner运行测试
查看报告
在项目的target/surfire-reports目录下有TEST-demo.demo.html文件,浏览器中打开即可看到结果
持续集成
可以借助于jenkins完成自动化测试并且jenkins提供插件cucumber-reports可以展示可读性强的自动化测试报告
需要修改Runner继承KarateRunner,先引入Karate-testng依赖
<dependency> |
修改DemoRunner,注意配置CucumberOptions,要产生json格式的报告,cucumber-reports插件会去解析该文件并生成报告
package demo; import com.intuit.karate.junit4.Karate; import com.intuit.karate.testng.KarateRunner; @CucumberOptions(features = "classpath:demo/demo. feature",format={"pretty", "html:reports","json:report.json"}) public class DemoRunner extends KarateRunner { } |
jenkins中cucumber-reports配置请参考网络资源
jenkins配置命令行运行指令
rm -rf ${WORKSPACE}/report.json |
jenkins报告展示
1分钟入门接口自动化框架Karate相关推荐
- 浅谈python+requests接口自动化框架
为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...
- python api开发用什么框架_python+requests接口自动化框架
为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...
- 用python画风车_python接口自动化()一)(实现一款简单的接口自动化框架)
python接口自动化一(设计一款自己的接口自动化框架) 一.起因: 前面学习过了python接口requests来进行接口测试,但是在框架选择上还是选择的unittest.当接口数量不怎么多时还好, ...
- 转:Jenkins+Jmeter+ant接口自动化框架for Linux学习
Jenkins+Jmeter+ant接口自动化框架for Linux学习 2018年06月08日 17:55:31 杀生丸的玲 阅读数:1031 版权声明: https://blog.csdn.net ...
- pytest文档73-pytest+yaml实现接口自动化框架之用例参数关联
前言 使用 yaml 文件写测试用例的时候,如何在 yaml 文件的测试用例里面实现参数关联? 这是很多做自动化测试的小伙伴经常思考的一个问题. 接着前面的pytest+yaml 文件实现接口自动化框 ...
- python+requests+pytest 接口自动化框架(四)
目录 一.requests库简介 二.requests库常用方法 三.request()返回的response对象 四.实战案例 post(url, data=None, json=None, **k ...
- python+requests+pytest 接口自动化框架(一)
目录 一.Pytest详解以及常用的插件安装 二.Pytest默认的测试用例的规则 三.Pytest用例运行方式以及参数 1.命令行模式运行 命令:pytes 2.主函数模式运行 3.基于pytest ...
- python接口自动化实战(框架)_python接口自动化框架实战
python接口测试的原理,就不解释了,百度一大堆. 先看目录,可能这个框架比较简单,但是麻雀虽小五脏俱全. 各个文件夹下的文件如下: 一.理清思路 我这个自动化框架要实现什么 1.从excel里面提 ...
- 最全最新pytest接口自动化框架
pytest接口自动化框架介绍: Python+pytest+allure+log+yaml(默认数据和动态传参)+数据驱动+关键字驱动+pymysql(数据清理尽量接口清理)+一键切换环境+多角色随 ...
最新文章
- 浮动元素会引起的问题和你的解决办法
- 深圳美景品牌策划机构:美景、BOBDOG传媒合作论坛广州举行
- 一天超2000次,阿里如何打响音视频超时空战役?
- 专业QA如何实施可靠的CI / CD管道?
- 重温JS基础--创建对象
- python面向对象思路_Python面向对象三要素-继承(Inheritance)
- Excel利用宏进行VBA编程
- 外贸软件助力国际贸易企业业财共享数字化转型升级
- SQL Sever创库
- air仿QQ弹出提示窗口
- 再谈BPM(业务流程管理)为企业带来哪些提升
- linux ftdi 虚拟,linux ftdi驱动
- python微博爬虫实战_爬虫实战(一):爬取微博用户信息
- 净宗科学观-净空法师讲于台南某高等学府
- J.P. Morgan Executes and Clears CDS and IRS Trades Via Bloomberg Professional
- 在网站页脚添加QQ邮箱的“邮我”功能
- 【数据库原理】概念结构、逻辑结构设计案例
- svga文件预览_SVGA文件格式——SVGA动画制作和文件转换
- 【原创达人】笔记本进水就坏了么
- selenium实例