• 0
  • 0
分享

在我看来接口测试相对其他类型的测试是比较简单的。对于最常见的HTTP接口,只需要知道接口的 URL、方法、参数类型、返回值 ... 就可以对接口进行测试了。

apifox

如果你是入门级选手,那么apifox应该很适合你,它是一款类似postman的接口测试工具。而且功能也很强大,定位 Postman + Swagger + Mock + JMeter。你值得尝试。

1.png

为什么不postman? 嗯,你说的都对!

HttpRunner

如果你不想用工具,也不想写代码。想更加简单高效的编写接口测试用例,那么HttpRunner2.x 就很适合你了。

{
    "config": {
        "name": "testcase description",
        "variables": {},
        "verify": false
    },
    "teststeps": [
        {
            "name": "/api/v1/hello/",
            "request": {
                "url": "http://127.0.0.1:8000/api/v1/hello/",
                "method": "GET"
            },
            "validate": [
                {"eq": ["body.code", 10200]},
                {"eq": ["body.message", "success"]}
            ]
        }
    ]
}

httpRunner已经更新3.x,HtppRunner 3.x还支持写代码了,还支持接口性能测试。我知道了,谢谢你的提醒!

Robot Framework

Robot Framework是一款通用了的测试框架,支持各种Library,如果你对它很熟悉的话,拿来做接口自动化手到擒来!

2.png

JMeter

JMeter是用来做性能测试的,在当前大部分系统都前后端分离的情况下,服务端性能 ~= 接口性能。

那么我把并发数设置成1,那么它就变身成为了接口自动化工具。

3.png

设置成100, 它又变成了接口性能工具,在功能/性能之间来回切换的大佬。可盐可甜!

Gauge

Gauge是基于BDD测试框架。拿它来做接口测试,怎么说呢,不是不行。就像妹子叫一个程序员修电脑。

  • 定义行为文件(测试数据)

login interface
===============
this is login api
test login
----------
* test post "/login" api
     |username  | password | code | message |
     |----------|----------|------|---------|
     | null | |10103|username or passwrord is null|
     |  | null |10103|username or passwrord is null|
     | error |error |10104|username or password error|
     | admin |a123456 |10200|login success|
  • 执行测试

from getgauge.python import step
from .utils.base import Base
import requests
@step("test post <url> api <table>")
def test_post_request(url, table):
    username = [str(user)
                for user in table.get_column_values_with_name("username")]
    password = [str(pawd)
                for pawd in table.get_column_values_with_name("password")]
    code = [int(code) for code in table.get_column_values_with_name("code")]
    message = [str(msg)
               for msg in table.get_column_values_with_name("message")]
    for i in range(len(username)):
        data = {"username": username[i], "password": password[i]}
        r = requests.post(Base.url + url, data=data)
        result = r.json()
        print(result)
        assert result["code"] == code[i]
        assert result["message"] == message[i]

看不懂?!没关系,妹子也看不懂你是如何把电脑修好的,总之,看上去很厉害的样子就对了。

httpx

如果你喜欢写代码,还有什么是比httpx库更简单好用的吗? httpx本身只是一个HTTP测试库而且,要做自动化还需要单元测试框架配合,如 pytest。

import httpx
def test_case():
    r = httpx.put('http://httpbin.org/put', data = {'key':'value'})
    assert r.status_code
    assert r.json() is dict()

有人高喊:你一定是偷了Requests家东西!httpx 涨红着脸说:参考不能算偷,偷....程序员的事情,能算偷吗?接连便是高大上的话,什么"支持异步了,下一代HTTP库...", 引得众人都哄笑起来。

还不服是吧!?就凭httpx 只要敲5个字符,而requests 要8个字符,就是httpx赢!

MeterSphere

metersphere是一个开源的测试平台,由商业公司维护,比起一些个人的测试平台项目,稳定性和易用性上面做的还是不错的。

4.png

你完全可以基于MaterSphere做二次开发,它用的非常主流的 Java(spring) + JavaScript(vue.js) 的技术开发。

总结

接口测试的工具还有很多,本文相当于每种玩法都介绍了一种。不管用哪种工具,只要足够精通,那么都可以解决工作中的大部分问题。


作者:虫师

原文链接:https://www.cnblogs.com/fnng/p/14737803.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 前言容器化这个词,对于互联网公司的运维人员来说是非常熟悉的。但我们测试开发的兄弟姐妹可能会有疑问:这个与测试有什么关系?其实不是有关系,而是回归到我们平时工作中遇到的困难,以及对于这些困难,我们提供了什么解决方案。不管从事开发工作也好,测试工作也罢,如果懂得容器化会对自己的工作有很大的增益。工欲善其事必先利其器,容器化(Docker)不管对于开发者来说,还是测试人员来说都是一把利器。比较重要的一点是可以帮忙公司降低cost,这对于老板们来说是非常有说服力的,以下给大家举两个例子,说明一下Docker的用处,都是女巫工作中遇到的典型案例,当然这远远不能全面说明Docker的好处,但是已经很能说明...
            10 10 1628
            分享
          •   冒烟测试,刚进公司就接触到了。只是刚开始一直没有体会到冒烟的含义和精髓,一直以为是冒烟测试就是把待测产品的主要功能测试一下就行了。后面回想一下,不是那么回事的。  冒烟测试源自硬件行业,对一个硬件或者硬件组件改动后,直接给设备加电,看看设备会不会冒烟,没冒烟,就表示待测组件是通过了测试。  在软件开发过程中,一直有高内聚,低耦合这样的说法,各个功能模块之间的耦合还是存在的,因此一个功能的改动,还是会影响到其他功能模块。  因此在开发人员修复了先前测试中发现的bug后,想知道这个bug的修复是否会影响到其他功能模块,需要做的就是冒烟测试。  搞清楚冒烟测试的起源,冒烟测试的目的后,不难想到,...
            0 0 2617
            分享
          • 在之前的文章和视频中,我分享过Groovy语法中def关键字的基本使用方法。当时对def理解是:不定类型变量,资料中也有说是无类型变量,感觉两个意思大差不差,就是不显式声明对象类型。基本使用方式如下:def a = 1def b = "FunTester"类似这样的方式,当时Java新版也已经支持了var可以替代一些显式声明变量类型的代码,但是除了使用范围上,Groovy的def还是明显优于var,而且功能上也是强不少(当然有人理解为弱不少,后续讲解)。本质区别在于Groovy的def不仅可以替代显式的类型声明,还...
            0 0 926
            分享
          •   本文是一篇利用AI生成测试用例的实战内容,包括AI原理及测试用例生成过程两方面,接下来先看看测试界面及生成的测试用例效果展示。  一 训练结果  测试页面  下图这是我的测试页面:  AI模型生成的测试用例:  二 Kimi AI 模型介绍  地址:https://kimi.moonshot.cn/chat/cnjrkho3r0737glhtm80  Kimi AI模型是由月之暗面科技有限公司(Moonshot AI)开发的智能助手。它的核心能力在于处理长文本,支持长达20万汉字的输入,这在全球大模型产品中是一个显著的特点。Kimi AI能够处理多种类型的文件和来自不同网站的内容,包括PD...
            0 0 1616
            分享
          •   如果说,2020年对于全世界来说,都是一场极大地挑战的话;那么,2021年绝对是机遇多多的一年。因为,随着疫情在全球范围内逐步得到控制,无论是国际还是国内的环境,都会呈现逐步回暖的趋势。  那么,2021年,软件测试行业的形式又会变得如何呢?行业从业者已经饱和了吗?如果饱和了,行业从业者将如何破局?如果没饱和,什么样的人适合走入这个行业呢?  2021年,软件测试行业趋势分析和热门招聘方向  今天,我们就这些问题,来聊一聊2021年软件测试行业的7大主流趋势。希望能解决一部分小伙伴心中的困惑。  软件测试行业前景怎样?  1)主观感受  之所以会有这么多人担心这个问题,主要还是因为很多想转...
            11 11 1928
            分享
      • 51testing软件测试圈微信