Shashi Kumar Raja的翻译
因此,假设您要进行API自动化,但是每次您在Google搜索栏中键入最佳的api自动化工具时,就会看到指向前10个工具的太多链接,您会感到困惑,并决定明天一定会这样做

让我们首先了解如果想要(希望在明天)建立一个API自动化平台 ,我们需要什么。 请稍等一下……我说了,别再想了…… 我知道你的老板没有为任何付费工具分配一角钱 。 看,我读懂你的想法,不要大声思考

付费工具应挂起,而不要执行:)
1.我该从哪里开始编写测试?
您将需要一些东西,这些东西将为您提供编写测试的规则和准则集,并且还允许您使用多种工具和技术来做到这一点。 我听到铃响,不! 好吧,我知道铃声会响。
您是否听说过TESTNG , JUNIT , MOCHA , PYTEST和ROBOT !? 是的,它们都是测试自动化环境。
您需要根据自己的需求找到合适的测试环境:贵公司使用哪种现有技术? 您想做什么自动化? 哪种语言对您更方便,等等。 您会发现大多数流行语言的自动化环境,使您可以编写单元,功能和其他类型的API测试。
要了解有关测试环境的更多信息,请参阅本系列的第2部分,我在其中详细介绍了Mocha和Pytest 。
2.如何在测试环境中进行API调用?
这些平台大多数都支持API调用,包括HTTP请求库 ,因为REST API使用HTTP协议进行通信。
某些框架(例如mocha )使您可以自由使用自己选择的HTTP请求库(例如superagent) 。
<code class =“ lang-JS”>请求
.post('/ api / pet')
.send({name:'Manny',species:'cat'})//发送JSON帖子正文
.set('X-API-Key','foobar')
.set('accept','json')
.end((err,res)=> {
//调用end函数将发送请求
});
</ code>
它们为您提供了对GET,PUT,POST,DELETE和所有其他方法的轻松支持,您可以传递标头,缓存,请求参数(您称它为-知道了)
3.很酷,但是我的一些API提供JSON,另一些API提供XML作为响应,我该如何处理呢?
这些HTTP请求库中的大多数都允许您使用几种受支持的授权标准以JSON,XML,CSV,文本,图像,表单数据,编码数据格式发送和接收数据。
它们还允许您处理HTTP响应状态代码,并检查我们是否已收到所需的响应状态代码。
- 信息响应代码(1xx)
100-继续
101-交换协议
102-处理
- 成功响应代码(2xx)
200-确定206-部分内容
201-创建207-多状态
202-已接受208-已报告
203-非权威性信息226-使用IM
204-无内容250-存储空间不足
205-重置内容
- 重定向响应代码(3xx)
300-多项选择304-未修改
301-永久移动305-使用代理
302-找到307-临时重定向
303-另请参阅308-永久重定向
- 客户端错误响应代码(4xx)
400-多项选择410-未修改
401-永久移动411-使用代理
402-找到412-临时重定向
403-查看其他413-永久重定向
404-多项选择414-未修改
405-永久移动415-使用代理
406-找到416-临时重定向
407-请参阅其他417-永久重定向
408-找到418-临时重定向
409-查看其他
- 服务器错误响应代码(5xx)
500-内部服务器错误508-检测到循环
501-未实现509-带宽受限
502-错误的网关510-未扩展
503-服务不可用511-需要网络验证
504-网关超时550-权限被拒绝
505-不支持HTTP Ver 551-不支持选项
506-变量也协商598-Nework读取超时错误
507-存储空间不足599-网络连接超时错误
4.很好,但是我将如何处理测试数据?
取决于您从何处获取测试数据。 这些测试框架可让您使用其所基于语言的所有功能-
一个 数据库:您可以轻松创建数据库连接以读取数据。
b。 外部文件:您可以读取外部文本,JSON,CSV或任何其他文件。
c。 随机数据:您可以使用仿造者之类的库即时生成随机测试数据。
<code> var faker = require('faker');
var randomName = faker.name.findName(); //罗文·尼古拉斯(Rowan Nikolaus)
var randomEmail = faker.internet.email(); // Kassandra.Haley@erich.biz
var randomCard = faker.helpers.createCard(); //包含许多属性的随机名片
</ code>
d。 来自API响应的数据:在测试过程中,很多时候,您需要将一个API的响应作为请求数据传递给另一个。 您可以使用钩子来执行此操作,您将获得像之前,之前,之后,之后每个函数之类的函数,顾名思义,这些函数在任何或所有测试之前/之后执行。 在API2之前调用API1,并将其响应传递给API2。 恰到好处! ️
5.处理测试数据和进行API调用似乎很简单,但是如何检查API响应?
要验证答案,您将需要一个名为断言库的库 。 断言库捆绑了许多测试环境,使您能够用普通的英语(例如语法)编写assert。 它们还允许您检查响应的JSON模式 。
在mocha中,您可以使用任何断言库,例如chai 。
<code> response.status.should.equal(200)
foo.should.be.a('string');
foo.should.have.lengthOf(3);
茶应该具有的属性(“风味”)
.with.lengthOf(3);
</ code>
6.很棒! 经过所有这些测试之后,剩下的时间不多了,以某种方式告诉我的老板我做了什么以及在哪里发现问题?
这些框架中的大多数将为您提供基本的HTML测试运行报告 ,您可以下载并共享。 如果您需要使用图形和图表提供更精美的报告,则可以使用多种开源报告工具,例如allure或mochawesome 。

7.仅当我能获得带有这些内容的某种模板以立即启动API自动化时
我告诉你的是什么,你叫它,你得到了
这是我创建的用于使用node.js中的mocha自动化API的模板。
它包括-
- 测试框架(摩卡),
- HTTP请求库(超级测试),
- 断言库(chai),
- 记者(魅力),
- 记录器(温斯顿),
- 随机数据生成器(faker),
- Eslint支持和
- 顽皮的字符串验证集成 。 您所要做的就是克隆/下载它,然后就可以开始使用了。
如果您需要其他语言的模板,我可以为明天做准备。
如果您喜欢这篇文章,可以鼓掌 ,这可能会让我写更多