顾翔老师的《软件测试技术实战设计、工具及管理》网上购买地址:
https://item.jd.com/34295655089.html
《基于Django的电子商务网站》网上购买地址:
https://item.jd.com/12082665.html
店铺二维码:
来源:掘金
基于Gin框架进行httptest单元测试
一.实例代码
3.1 首页
3.2 导入用户
3.3 抽奖
1.全局变量及main函数
2.初始化路由
3.三个主要功能
二.测试工具函数
2.1 ParseToStr将map中的键值对输出成querystring形式
2.2 Get 根据特定请求uri,发起get请求返回响应
2.3 ParseToStr 将map中的键值对输出成querystring形式
2.4PostJson根据特定请求uri和参数param,以Json形式传递参数,发起post请求返回响应
三.开始进行 httptest 测试
四.运行单元测试,查看结果
五.总结
昨天晚上在学习慕课网的课程时,写了个简单的抽奖demo,打算简单测试在并发场景下临界资源是否被修改的问题。
然后前后折腾了好久才测试成功,记录下自己在进行httptest
单元测试时学到的知识。
一.实例代码
以下代码是要的测试内容,大致有三个功能:
index 首页,GET请求
导入抽奖用户,POST请求
抽奖,GET请求
1.全局变量及main函数
记得初始化锁,否则不起作用。
2.初始化路由
主要初始化了三个功能的路由
3.三个主要功能
请求成功后,每个页面都是返回一个字符串(包含各自的信息)
3.1 首页
3.2 导入用户
3.3 抽奖
二.测试工具函数
在httptestUtil.go
文件中主要封装了以下工具函数:
2.1 ParseToStr 将map中的键值对输出成querystring形式
2.2 Get 根据特定请求uri,发起get请求返回响应
2.3 ParseToStr 将map中的键值对输出成querystring形式
构造POST请求,表单数据以 querystring
的形式加在uri之后
注意:form表单的参数可以通过 querystring
的形式附在URI地址后面进行传递
这种方式,POST 请求获取参数是时要调用 c.Query("users")
,而不是c.PostFprm("users")
,更不是c.Param("users)
当然直接使用 c.ShouldBind()
,让gin自动判断是哪种方式的请求参数。
代码如下:
2.4 PostJson 根据特定请求uri和参数param,以Json形式传递参数,发起post请求返回响应
三.开始进行 httptest 测试
Golang规范是推荐一个方法写一个测试函数,并且以Test
开头,后面跟方法名。
为了测试代码是否并发安全,就将三个功能的测试都写在同一个测试函数里,于是就命名为了TestMVC
。
四.运行单元测试,查看结果
运行结果如图:
如图:
在我个人电脑上,测试运行耗时:9.21s;根据users字段的名字也说明了执行了 100000次,因为是并发执行的,所以顺序肯定不是从1到100000按序显示的(谁抢到CPU资源谁执行)
五.总结
从昨天晚上7点开始练习项目,进行单元测试,中间睡了6个小时吧。早上起来后,经过昨晚测试的磨练和学习,上午思路很清晰,不仅单元测试成功了,还将之前自己鼓捣的测试代码进行了重构和优化,直到今天上午11点多才正式完成。
第一次写Golang的httptest单元测试,整个过程就是边搜边学边实践,最后总算成功了。写一下 httptest 测试心得吧:
在测试之前,封装好 get put等请求的方法,封装到 httptestUtil,方便测试
灵活应用测试框架,比如
Testify
,能少写很多 if 判断,(主要用来判断响应码和响应实体)。刚开始我就是if else
写了很多判断,后来学了这个测试框架测试代码尽量简洁,保证可读性和可维护性。否则写一坨代码,容易逻辑混乱,而且看上去很烦,影响测试心智和测试准确性
如果遇到新的测试问题,尽量多搜多查多静下来想一想,不要一股脑埋进去死挖问题原因。很可能你所纠结的问题并不是真正的原因
如果测试顺利,那一切都好;如果测试不顺利,期间搜了很多资料,花费了大量时间进行测试,那么最后一定要写博客(或笔记),记录所学所想所得,否则以后还会遇到类似的问题
测试代码最好贴到博客(或笔记APP)上,方便以后查看
最重要的一点,思路要清晰。测试很容易让人头大,烦躁,不要死磕,不妨停下来缓一缓,休息一下,让大脑放松下来
参考资料:
1.Gin官方测试文档
2.基于golang gin框架的单元测试
3.用 Testify 来改善 GO 测试和模拟
作者:相守之路
链接:https://juejin.im/post/5ec2417df265da7beb50bb16
来源:掘金
————————————————————
顾老师课程欢迎报名
软件安全测试
https://study.163.com/course/courseMain.htm?courseId=1209779852&share=2&shareId=480000002205486
接口自动化测试
https://study.163.com/course/courseMain.htm?courseId=1209794815&share=2&shareId=480000002205486
DevOps 和Jenkins之DevOps
https://study.163.com/course/courseMain.htm?courseId=1209817844&share=2&shareId=480000002205486
DevOps与Jenkins 2.0之Jenkins
https://study.163.com/course/courseMain.htm?courseId=1209819843&share=2&shareId=480000002205486
Selenium自动化测试
https://study.163.com/course/courseMain.htm?courseId=1209835807&share=2&shareId=480000002205486
性能测试第1季:性能测试基础知识
https://study.163.com/course/courseMain.htm?courseId=1209852815&share=2&shareId=480000002205486
性能测试第2季:LoadRunner12使用
https://study.163.com/course/courseMain.htm?courseId=1209980013&share=2&shareId=480000002205486
性能测试第3季:JMeter工具使用
https://study.163.com/course/courseMain.htm?courseId=1209903814&share=2&shareId=480000002205486
性能测试第4季:监控与调优
https://study.163.com/course/courseMain.htm?courseId=1209959801&share=2&shareId=480000002205486
Django入门
https://study.163.com/course/courseMain.htm?courseId=1210020806&share=2&shareId=480000002205486
啄木鸟顾老师漫谈软件测试
https://study.163.com/course/courseMain.htm?courseId=1209958326&share=2&shareId=480000002205486
本文分享自微信公众号 - 软件测试培训(iTestTrain)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。