泰语网站怎么建设,互联网如何挣钱创业,做网站都要买出口带宽吗,刷外链工具#x1f4e2;专注于分享软件测试干货内容#xff0c;欢迎点赞 #x1f44d; 收藏 ⭐留言 #x1f4dd; 如有错误敬请指正#xff01;#x1f4e2;交流讨论#xff1a;欢迎加入我们一起学习#xff01;#x1f4e2;资源分享#xff1a;耗时200小时精选的「软件测试」资… 专注于分享软件测试干货内容欢迎点赞 收藏 ⭐留言 如有错误敬请指正交流讨论欢迎加入我们一起学习资源分享耗时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 测试库
一个简单且可扩展的行为测试库。
测试库: https://github.com/steinfletcher/apitest jsonpath库: github.com/steinfletcher/apitest-jsonpath
简单的get接口
package apiimport (net/httptestingtimegithub.com/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(http://httpbin.org/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.com/steinfletcher/apitest-jsonpath
)...func TestGetParams(t *testing.T) {cli : Client()apitest.New().EnableNetworking(cli).Intercept(func(req *http.Request) {req.URL.RawQuery id1namejack}).Get(http://httpbin.org/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(http://httpbin.org/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(http://httpbin.org/post).JSON({message: hi}).Expect(t).Assert(jsonpath.Chain().Contains($.data, message).Contains($.data, hi).End()).End()
}JSON() 用于设置JSON()请求方法。
apitest 评价
官网https://apitest.dev/
apitest 在完成http接口测试方面还是非常方便的如果你被 go语言的 http 库蹂躏过一段时间之后感触更深怎么说了比如你经常被老板PUA突然有一天老板居然当面表扬了你大概就这种感觉。
分类 go 最后
如果你想学习自动化测试那么下面这套视频应该会帮到你很多 如何逼自己1个月学完自动化测试学完即就业小白也能信手拈来拿走不谢允许白嫖.... 最后我这里给你们分享一下我所积累和整理的一些文档和学习资料有需要直接领取就可以了 以上内容对于软件测试的朋友来说应该是最全面最完整的备战仓库了为了更好地整理每个模块我也参考了很多网上的优质博文和项目力求不漏掉每一个知识点很多朋友靠着这些内容进行复习拿到了BATJ等大厂的offer这个仓库也已经帮助了很多的软件测试的学习者希望也能帮助到你。