自动化API入门:第1部分-概述

Shashi Kumar Raja的翻译


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




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



付费工具应挂起,而不要执行:)


1.我该从哪里开始编写测试?

您将需要一些东西,这些东西将为您提供编写测试的规则和准则集,并且还允许您使用多种工具和技术来做到这一点。 我听到铃响,不! 好吧,我知道铃声会响。


您是否听说过TESTNGJUNITMOCHAPYTESTROBOT !? 是的,它们都是测试自动化环境。


您需要根据自己的需求找到合适的测试环境:贵公司使用哪种现有技术? 您想做什么自动化? 哪种语言对您更方便,等等。 您会发现大多数流行语言的自动化环境,使您可以编写单元,功能和其他类型的API测试。


要了解有关测试环境的更多信息,请参阅本系列的第2部分,我在其中详细介绍了MochaPytest


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测试运行报告 ,您可以下载并共享。 如果您需要使用图形和图表提供更精美的报告,则可以使用多种开源报告工具,例如alluremochawesome



7.仅当我能获得带有这些内容的某种模板以立即启动API自动化时

我告诉你的是什么,你叫它,你得到了


这是我创建的用于使用node.js中的mocha自动化API的模板


它包括-


  • 测试框架(摩卡),
  • HTTP请求库(超级测试),
  • 断言库(chai),
  • 记者(魅力),
  • 记录器(温斯顿),
  • 随机数据生成器(faker),
  • Eslint支持和
  • 顽皮的字符串验证集成 。 您所要做的就是克隆/下载它,然后就可以开始使用了。

如果您需要其他语言的模板,我可以为明天做准备。


如果您喜欢这篇文章,可以鼓掌 ,这可能会让我写更多

Source: https://habr.com/ru/post/zh-CN433726/


All Articles