testing - 测试基本使用接口

testing - 测试基本使用接口

当你写完一个函数,结构体,main之后,你下一步需要的就是测试了。testing包提供了很简单易用的测试包。

写一个基本的测试用例

测试文件的文件名需要以_test.go为结尾,测试用例需要以TestXxxx的样式存在。

比如我要测试utils包的sql.go中的函数:

func GetOne(db *sql.DB, query string, args ...interface{}) (map[string][]byte, error) {

就需要创建一个sql_test.go

package utils

import (
    "database/sql"
    _ "fmt"
    _ "github.com/go-sql-driver/mysql"
    "strconv"
    "testing"
)

func Test_GetOne(t *testing.T) {
    db, err := sql.Open("mysql", "root:123.abc@tcp(192.168.33.10:3306)/test")
    defer func() {
        db.Close()
    }()
    if err != nil {
        t.Fatal(err)
    }

    // 测试empty
    car_brand, err := GetOne(db, "select * from user where id = 999999")
    if (car_brand != nil) || (err != nil) {
        t.Fatal("emtpy测试错误")
    }
}

testing的测试用例形式

测试用例有四种形式:
TestXxxx(t testing.T) // 基本测试用例
BenchmarkXxxx(b 
testing.B) // 压力测试的测试用例
Example_Xxx() // 测试控制台输出的例子
TestMain(m *testing.M) // 测试Main函数

给个Example的例子:(Example需要在最后用注释的方式确认控制台输出和预期是不是一致的)

func Example_GetScore() {
    score := getScore(100, 100, 100, 2.1)
    fmt.Println(score)
    // Output:
    // 31.1
}

testing的变量

gotest的变量有这些:

  • test.short : 一个快速测试的标记,在测试用例中可以使用testing.Short()来绕开一些测试
  • test.outputdir : 输出目录
  • test.coverprofile : 测试覆盖率参数,指定输出文件
  • test.run : 指定正则来运行某个/某些测试用例
  • test.memprofile : 内存分析参数,指定输出文件
  • test.memprofilerate : 内存分析参数,内存分析的抽样率
  • test.cpuprofile : cpu分析输出参数,为空则不做cpu分析
  • test.blockprofile : 阻塞事件的分析参数,指定输出文件
  • test.blockprofilerate : 阻塞事件的分析参数,指定抽样频率
  • test.timeout : 超时时间
  • test.cpu : 指定cpu数量
  • test.parallel : 指定运行测试用例的并行数

testing包内的结构

  • B : 压力测试
  • BenchmarkResult : 压力测试结果
  • Cover : 代码覆盖率相关结构体
  • CoverBlock : 代码覆盖率相关结构体
  • InternalBenchmark : 内部使用的结构
  • InternalExample : 内部使用的结构
  • InternalTest : 内部使用的结构
  • M : main测试使用的结构
  • PB : Parallel benchmarks 并行测试使用结果
  • T : 普通测试用例
  • TB : 测试用例的接口

testing的通用方法

T结构内部是继承自common结构,common结构提供集中方法,是我们经常会用到的:

当我们遇到一个断言错误的时候,我们就会判断这个测试用例失败,就会使用到:

Fail  : case失败,测试用例继续
FailedNow : case失败,测试用例中断

当我们遇到一个断言错误,只希望跳过这个错误,但是不希望标示测试用例失败,会使用到:

SkipNow : case跳过,测试用例不继续

当我们只希望在一个地方打印出信息,我们会用到:

Log : 输出信息
Logf : 输出有format的信息

当我们希望跳过这个用例,并且打印出信息:

Skip : Log + SkipNow
Skipf : Logf + SkipNow

当我们希望断言失败的时候,测试用例失败,打印出必要的信息,但是测试用例继续:

Error : Log + Fail
Errorf : Logf + Fail

当我们希望断言失败的时候,测试用例失败,打印出必要的信息,测试用例中断:

Fatal : Log + FailNow
Fatalf : Logf + FailNow
时间: 2024-11-01 23:26:54

testing - 测试基本使用接口的相关文章

dbi-测试程序测试数据库访问接口DBI

问题描述 测试程序测试数据库访问接口DBI 写个简单的测试程序测试数据库访问接口DBI,实现功能:1 输入参数 数据库类型.IP.端口.用户名.密码.数据库名.查询语句2 输出: 0 如果能正常执行1 数据库类型不支持2 IP.端口连接不上 3 数据库登录错误4 语言执行错误 解决方案 脚本语言都可以 而且开发起来快速

stub测试时如何接口转发

stub测试时如何接口转发我们的网站依赖协作方接口(其他部门开发),经常遇到的情况是:我们进行开发时,协作方的接口没有开发完成,所以我们没法调用.协作方会提前把API文档发给我们.所以我们想到了stub,根据他们提供的API文档,制造假数据,这样就不会阻碍我们的开发.具体服务依赖:我们的网站是store.ccc.com,依赖协作方的域名:bsvc.ccc.com我们这次迭代,依赖他们2个接口:分别是:bsvc.ccc.com/v1/store/aaabsvc.ccc.com/v1/store/b

使用Mozilla Firefox插件RestClient测试Http API接口

RESTClient是Mozilla Firefox一个用于测试http请求插件.在火狐附加组件里面查询并安装,非常小巧,界面非常简单,使用非常的方便,看下面这张图你就全明白了,希望对新手有帮助! 1.打开火狐扩展搜索RESTClient进行安装并重启浏览器. 2.重启后可以在Mozilla Firefox地址栏右侧看到RESTClient图标,点击图标进入使用.可以配置Request:POST.GET请求URL.Content-Type.Body.点击send执行完毕返回并显示Response

《测试驱动的嵌入式C语言开发》——3.5节先测试驱动接口再测试驱动内部实现

3.5 先测试驱动接口再测试驱动内部实现好的接口对于设计良好的模块来讲很关键.前面几个测试会驱动接口设计.关注于接口意味着我们是从外向内开发代码的.测试作为接口的首个用户,从调用者(或客户端代码)的角度给出了开发代码的使用方式.从使用者的角度出发会产生可用性更强的接口.我通常也会让前面的几个测试来检验一些产品代码的边界条件.选择一个带边界检查的简单用例. 为了消除这个编译错误,在模块的接口声明头文件中增加这个接口函数原型: 写出并且通过这些测试能帮助我们实现以下目标:它定义了驱动程序的一个接口函

PHP接口并发测试的方法(推荐)_php实例

如下所示: header('Content-type:text/html; Charset=utf-8'); $uri = "输入你的url"; $data = array( 'test'=>1 ); $ch = curl_init(); // print_r($ch); curl_setopt($ch, CURLOPT_URL, $uri); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER,

Web测试概述

web应用程序测试方法和测试技术详述  1. 概述  l 随着web应用的增多,新的模式解决方案中以web为核心的应用也越来越多, 很多公司各种应用的架构都以B/S及web应用为主,但是有关WEB测试方面的内容并没有相应的总结,所以我在这里对web的测试方法和采用的测试技术进行总结,便于内部交流.  l 测试方法尽量涵盖web程序的各个方面,测试技术方面在继承传统测试技术的技术上结合web应用的特点.  l 相关的测试和实现技术也有着很大的关系,由于本公司使用J2EE体系,也许例子中只有JAVA

笔记本测试维修工具指导手册

笔记本功能测试.维修(一级)工具包括:防静电工具.测试硬件工具.维修拆装工具.测试软件工具.清洁工具等. 1.防静电工具: 1)防静电地线:静电释放通路; 2)静电手套:减少静电的产生.积累; 3)防静电环:工程师积累静电释放工具,与防静电地线连接,构成释放通路; 4)防静电桌布:维修设备积累静电释放工具,与防静电地线连接,构成释放通路; 5)维修工作台:工作台面的布局总的原则是:各部分相互隔离,规范.整洁,便于维修操作和维修思路清晰,不至造成故障进一步扩大.在工作台上安装铺有防静电桌布.防静电

测试工具的选择和使用

2003年第9期<程序员>上啄木鸟部落发文"测试工具的选择和使用",现将其中的工具列表摘录,以备忘 Parasoft白盒测试工具集 工具名 支持语言环境 简介 Jtest Java 代码分析和动态类.组件测试 Jcontract Java 实时性能监控以及分析优化 C++ Test C,C++ 代码分析和动态测试 CodeWizard C,C++ 代码静态分析 Insure++ C,C++ 实时性能监控以及分析优化 .test .Net 代码分析和动态测试 Compuwar

java-测试下载接口文档方法

问题描述 测试下载接口文档方法 有个测试下载的接口,需要输入一条数据然后才能下载一个文档.要下载近千个,这个用什么工具比较好.或者用什么方法比较方便? 解决方案 直接写一个while循环,循环体中写一个http请求,参数是要输入的数据