go测试库之apitest

编程入门 行业动态 更新时间:2024-10-25 00:25:24

go<a href=https://www.elefans.com/category/jswz/34/1771117.html style=测试库之apitest"/>

go测试库之apitest

  • 📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢交流讨论:欢迎加入我们一起学习!
  • 📢资源分享:耗时200+小时精选的「软件测试」资料包
  • 📢 最困难的时候,也就是我们离成功不远的时候!

目录

    • 前言
    • apitest 测试库
    • apitest 评价
    • 最后

前言

使用go语言做开发差不多快一年了,主要用来写后端Web服务,从一开始吐槽他的结构体,比如创建个复杂的JSON格式数据,那是相当的痛苦。还有 err 处理写的巨麻烦。

当然,go 也有爽的地方,创建个线协程简直太简单了。

到后来慢慢接受,觉得效率还行,因为是静态强类型语言,在修改完项目代码之后,反而很有信心(如果出现低级的类型错误,直接编译出错了),相比 Python 就要反复检查两边,对修改的代码总时心里发虚。

go语言测试相关的东西都不咋地,比如自带的测试框架相比较 pytest 那是相当的简陋。今年开始给后端写单元测试(其实应该叫接口测试),发现 apitest库 眼前一亮。采用链式调用,和 HttpRunner 3.x 的链式调用颇有几分相似。

HttpRunner 3.x

# httprunner 3.x 
from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCaseclass TestCaseTestCase(HttpRunner):config = Config("basic test config").base_url("http://127.0.0.1:8000/api")teststeps = [Step(RunRequest(" test_add_event_all_null").post("/add_event/").with_data({"eid": "", "limit": "", "address": "", "start_time": ""}).validate().assert_equal("body.status", 10021).assert_equal("body.message", "parameter error"))]if __name__ == "__main__":TestCaseTestCase().test_start()

apitest 测试库

一个简单且可扩展的行为测试库。

测试库: jsonpath库: github/steinfletcher/apitest-jsonpath

简单的get接口

package apiimport ("net/http""testing""time""github/steinfletcher/apitest"
)func Client() http.Client {cli := &http.Client{Timeout: time.Second * 10,}return *cli
}func TestGetSample(t *testing.T) {cli := Client()apitest.New().EnableNetworking(&cli).Get("").Expect(t).Status(http.StatusOK).End()
}

New(): 创建一个新的API测试。

EnableNetworking(): EnableNetworking为提供的客户端启用网络,需要一个 http.Clinet。

Get(): 发送get 请求,需要一个URL。

Expect(): Expect将请求规范标记为完整。

Status(): 断言http状态。http.StatusOK = 200

End(): End运行测试,将结果返回给调用者。

get接口带参数

import (...jsonpath "github/steinfletcher/apitest-jsonpath"
)...func TestGetParams(t *testing.T) {cli := Client()apitest.New().EnableNetworking(&cli).Intercept(func(req *http.Request) {req.URL.RawQuery = "id=1&name=jack"}).Get("").Expect(t).Assert(jsonpath.Contains(`$.args.id`, "1")).Assert(jsonpath.Equal(`$.args.name`, "jack")).End()
}

req.URL.RawQuery: 用于定义get请求参数。

Assert() ,方法用于断言。

jsonpath 提供了断言方法,Contains判断包含,Equal判断相等。

post接口Form-data参数

func TestPostFormData(t *testing.T) {cli := Client()apitest.New().EnableNetworking(&cli).Post("").FormData("key1", "value1").FormData("key2", "value2").Expect(t).Assert(jsonpath.Chain().Equal(`$.form.key1`, "value1").Equal(`$.form.key2`, "value2").End()).End()
}

FormData() 用于设置form-Data格式的参数。

jsonpath 提供的断言同样支持链式调用。

post接口JSON参数

...func TestPostJson(t *testing.T) {cli := Client()apitest.New().EnableNetworking(&cli).Post("").JSON(`{"message": "hi"}`).Expect(t).Assert(jsonpath.Chain().Contains(`$.data`, "message").Contains(`$.data`, "hi").End()).End()
}

JSON() 用于设置JSON()请求方法。

apitest 评价

官网:/

apitest 在完成http接口测试方面还是非常方便的,如果你被 go语言的 http 库蹂躏过一段时间之后感触更深;怎么说了,比如你经常被老板PUA,突然有一天老板居然当面表扬了你,大概就这种感觉。

分类 go


最后

如果你想学习自动化测试,那么下面这套视频应该会帮到你很多

如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖....

最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了!


以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

​​

​​​​

更多推荐

go测试库之apitest

本文发布于:2023-11-17 01:39:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1637081.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:测试   apitest

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!