golang web开发 Handler测试利器httptest_golang web api test_kingeasternsun的博客-程序员宅基地

技术标签: Golang你所不知道的技巧  Go  

test是golang语言的一部分,golang提供了非常强大的测试方法。单元测试,压力测试可以参见 golang 1.7之后高级测试方法之子测试,子基准测试(subtest sub-benchmarks)

我们用go开发一个Web Server后,打算单元测试写的handler函数,在不知道httptest之前,使用比较笨的方法
就是编译运行该Web Server后,再用go编写一个客户端程序向该Web Server对应的route发送数据然后解析
返回的数据。这个方法测试时非常麻烦,使用httptest来测试的话就非常简单,可以和testing测试一起使用。

httptest基本使用方法

假设在server中handler已经写好

http.HandleFunc("/health-check", HealthCheckHandler)

func HealthCheckHandler(w http.ResponseWriter, r *http.Request) {
    // A very simple health check.
    w.WriteHeader(http.StatusOK)
    w.Header().Set("Content-Type", "application/json")

    // In the future we could report back on the status of our DB, or our cache 
    // (e.g. Redis) by performing a simple PING, and include them in the response.
    io.WriteString(w, `{"alive": true}`)
}

测试如下:

import (
    "net/http"
    "net/http/httptest"
    "testi
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/KingEasternSun/article/details/78248101

智能推荐

PS安装完成后出现请卸载重新安装_请卸载并重新安装-程序员宅基地

Ps安装完成后出现请卸载并重新安装该产品的问题我的解决办法:以管理员身份运行就可以了。_请卸载并重新安装

mysql授权给远程用户访问-程序员宅基地

当前面临的web server都在远程机器上,不在本地,虽然已经开发完成,处于维护数据库阶段,但是时不时的登录到远程机器来操作还是不方便,可以将远程server上的mysql授权给远程访问权限,然后本地使用一个mysql ui工具就ok了,比如Navicator.... 1.授权1)进入目录C:\Program Files\MySQL\MySQL Server 5.5\bin,执行命令

基于ckeditor富文本编辑器+webupload+从word复制图片粘贴上传_web编辑器从word复制图片自动上传-程序员宅基地

由于公司需要,本人花费不少时间研究ckeditor,本来ckeditor自带上传图片功能,但是考虑到隔离服务器上传,而且需要进度条,于是乎集成webupload上传控件,但是ckeditor有没有从word复制图片直接粘贴到文本编辑器中的功能,所有介绍这两种用法。一、ckeditor集成webupload控件实现图片上传功能。 1、首先准备ckeditor文本编辑器插件我这里用..._web编辑器从word复制图片自动上传

petalinux kernel bootargs-程序员宅基地

kernel bootargs的设置也很重要。设置得不正确的话,会无法启动kernel。例如:卡在Starting kernel …进不去。它允许 PetaLinux 在 DTS 中自动生成内核启动命令行设置,或者传递 PetaLinux 用户定义的内核启动命令行设置。bootargs参数默认是:console=ttyPS0,115200 earlyprintk。用户可以自定义。rootargs中的参数说明:rootwait :代表无限等待下去,直到相关底层准备完毕。console : 指定串口.

EditPlus 远程连接 Linux 服务器 使用教程-程序员宅基地

1、场景:倘若你对 Linux 中的 vim 命令不是很熟悉,那么使用 EditPlus 连接远程服务器,本地打开EditPlus像编辑‘’记事本“”般的修改 Linux 相关配置, 岂不美滋滋,本文介绍使用教程!!!2、本机安装EditPlus,估计你已经安装了~3、配置步骤如下:(1)进入FTP 设置(2)配置远程Linux信息(3)进入高级选项(4)远程登...

md 首行缩进_md缩进_请叫我大师兄_的博客-程序员宅基地

在要缩进的行开头加    具体看下面md文件的图和实际md文件的展示效果图。_md缩进

随便推点

放弃有道词典和有道云笔记_有道云笔记和有道词典的关系-程序员宅基地

放弃有道词典(移动版)和有道云笔记_有道云笔记和有道词典的关系

cocos creator加载和预加载(进度条)远程服务器资源教程_creator关卡预加载-程序员宅基地

由于受到整体包大小的限制,需要把资源放到服务器上。但是在用cocos creator加载远程服务器资源的时候还是遇到了好多问题,_creator关卡预加载

ubuntu安装常用命令-程序员宅基地

curl是一个Linux/Windows命令行工具。ubuntu中安装curlsudo apt-get install curltree命令是Linux/UNIX系统中常用得命令,可以方便地查看文件夹的结构,并以树形目录的形式展现。ubuntu中安装treesudo apt-get install treeJq是Linux处理JSON文件的工具,Jq是一个基于命令行的工具,通过简单的命..._ubuntu安装常用命令

牛客错题集(2)_任何形式的构造函数都可以实现数据类型转换-程序员宅基地

这里写目录标题专业知识C/C++操作系统计算机网络数据库软件测试软件工程知识盲区网络基础编译和体系结构专业知识C/C++Q: 有这样一个类:class Eye{ public: void Look(void);};现在希望定义一个Head类,也想实现Look的功能,应该使用()方法,实现代码重用。A: 组合即:class Head { Eye eye;};// but 这个Look的代码怎么实现?操作系统Q: 在 Windows 中,下列关于快速格_任何形式的构造函数都可以实现数据类型转换

视频也能参与排名,原来这么优化就行了-程序员宅基地

如果从搜索引擎的抓取原理来说,Flash是最难被认可的体现方式,因此以前的网站极少放置所谓的Flash动画,但合肥人才网小编发现,最近越来越多的视频网站,甚至企业站点也会放上一些视频,难道搜索引擎已经可以理解视频内容了吗?其实不然。 虽然理论上视频是不能被搜索引擎解读的,但不可否认的是视频会给用户带来较好的体验度,这样冲突的解决方式就是搜索引擎被“K.O”,一些放置视频的网站还不是一样排名

Bitmap使用方法-程序员宅基地

位图是我们开发中最常用的资源,毕竟一个漂亮的界面对用户是最有吸引力的。1. 从资源中获取位图可以使用BitmapDrawable或者BitmapFactory来获取资源中的位图。当然,首先需要获取资源: Resources res=getResources();使用BitmapDrawable获取位图使用BitmapDrawable_bitmap使用方法