Go-知识测试-测试参数

Go-知识测试-测试参数

  • 1. -args
  • 2. -json
  • 3. -o
  • 4. -bench
  • 5. -benchtime
  • 6. -cpu
  • 7. -count
  • 8. -failfast
  • 9. -list
  • 10. -parallel
  • 11. -run
  • 12. -timeout
  • 13. -v
  • 14 -benchmem

1. -args

指示go test 把-args 后面的参数带到测试中去。具体的测试函数会根据此参数来控制测试流程。
-args后面可以附带多个参数,所有参数都将以字符串形式传入,每个参数作为一个string,并存放到字符串切片中。

import ("flag""testing"
)func TestArgs(t *testing.T) {if !flag.Parsed() {flag.Parse()}args := flag.Args()for _, arg := range args {t.Logf("arg: %s", arg)}
}

使用 go test -v xx_test.go -args test hello world进行执行
在这里插入图片描述

2. -json

-json 参数用于指示go test将结果转换成json格式,便于在后续使用。
比如上面的例子go test -v xx_test.go -json -args test hello world
在这里插入图片描述

3. -o

-o 参数指定生成的二进制可执行程序,并执行测试,测试结束不会删除该程序。
没有此参数时,go test 生成的二进制可执行程序存放到临时目录中,执行结束便删除。
继续使用上述的例子
在这里插入图片描述

在这里插入图片描述

直接执行二进制程序
在这里插入图片描述

4. -bench

go test 默认不执行性能测试,使用-bench 参数才可以运行,而且只运行性能测试函数。
-bench 后面附加正则表达式,用于筛选需要执行的性能测试。如果要执行所有的性能测试,使用 . 作为正则。
这里的正则不是严格意义的正则,而是包含关系。
比如有如下三个性能测试:
func BenchmarkSlice(b *testing.B)
func BenchmarkSliceStr(b *testing.B)
func BenchmarkArray(b *testing.B)
如果使用go test -bench Slice ,那么会执行前两个,第三个不会被执行。
如果是子测试,那么是存在层级的:

func BenchmarkSub(b *testing.B){b.Run("name=1", benchSub1)b.Run("name=2", benchSub2)b.Run("n=3", benchSub3)
}

测试函数命名规则中,子测试的名字需要以父测试名字作为前缀并以/连接,上面的例子中实际上包含了4个测试:
Sub,Sub/name=1,Sub/name=2,Sub/n=3
如果想执行三个子测试,那么使用参数-bench Sub,如果只是想执行第一个,那么-bench Sub/name=1
如果想执行前两个,那么-bench Sub/name=
在这里插入图片描述

5. -benchtime

-benchtime s 指定每个性能测试的执行时间,如果不指定,那么默认执行1s.
在这里插入图片描述

6. -cpu

-cpu 参数提供了一个CPU个数的列表,提供此列表后,测试将按照这个列表指定的CPU数设置GOMAXPROCS并分别测试.
比如 -cpu 1,2 ,那么每个测试即将执行两次,一次是用1个CPU执行,另一次是用两个CPU执行。
在这里插入图片描述

示例测试不适用

7. -count

-count n 指定每个测试执行的次数,默认执行一次。
在这里插入图片描述

如果使用-count指定执行测试的同时还使用-cpu指定了多种CPU,那么测试将在每种CPU下均执行-count的次数。

示例测试不适用

8. -failfast

默认情况下,go test会执行所有匹配到的测试,并最后打印测试结果,无论成功或失败。
-failfast 指定如果有测试出现失败,则立即停止测试。

9. -list

-list regexp 只是列出匹配成功的测试函数,并不真正执行。而且不会列出子函数。
在这里插入图片描述

10. -parallel

-parallel n 指定测试的最大并发数。
当测试使用t.Parallel()方法将测试转为并发时,将受到最大并发数的限制,默认情况下,最多有GOMAXPROCS个测试并发,其他的测试只能阻塞等待。

11. -run

-run regexp 的作用是根据正则表达式执行单元测试和示例测试。正则匹配规则与-bench类似。

12. -timeout

-timeout d 默认情况下,测试执行超过10分钟就会因超时而退出。
如果将超时时间设置为1s,那么大于1s的都是因为超时而退出:
在这里插入图片描述

-timeout xs
-timeout xm
-timeout xh

13. -v

默认情况下,测试结果只打印简单的测试结果,-v 参数可以打印详细的日志。

在性能测试下,总是打印日志,因为日志有时会影响性能。

14 -benchmem

默认情况下,性能测试结果只打印运行次数,每个操作耗时。使用-benchmem则可以打印每个操作分配的字节数,每个操作分配的对象数。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/44736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主机安全-进程、命令攻击与检测

目录 概述反弹shell原理nc/dev/xxx反弹shell下载不落地反弹Shell各种语言反弹shell linux提权sudosuid提权mysql提权 Dnslog参考 概述 本文更新通过在主机(不含容器)上直接执行命令或启动进程来攻击的场景。检测方面以字节跳动的开源HIDS elkeid举例。每…

磁感应强度检测模块使用教程

目录 一、磁感应强度检测模块(AT 协议版本、Modbus 协议版本)1、参数2、报警引脚 二、AT版本1、接线说明2、AT 指令 三、Modbus 版本1、接线说明2、Modbus 指令格式3、Modbus 指令 一、磁感应强度检测模块(AT 协议版本、Modbus 协议版本) 图1 正面 图2 背面 AT 协议版本和 Modb…

Letter Exchange

这道题目看官方题解就好了,这个转换图论挺显然的 证明一下为什么最后一定是 显然练完贬值后图只能长成这个样子 在消掉长度为\(2\)的环后,如果说图没边了, 那么显然就不用交换了,否则的话我们任取一条边 那么对于\(2\)号点来说&am…

韦东山嵌入式linux系列-驱动进化之路:总线设备驱动模型

1 驱动编写的 3 种方法 以 LED 驱动为例 1.1 传统写法 使用哪个引脚,怎么操作引脚,都写死在代码中。 最简单,不考虑扩展性,可以快速实现功能。 修改引脚时,需要重新编译。 应用程序调用open等函数最简单的方法是驱动…

(深度估计学习)Depth Anything V2 复现

Depth Anything V2 复现 一、配置环境二、准备数据1. 权重文件2. 训练数据 三、Test四、Train 代码:https://github.com/DepthAnything/Depth-Anything-V2 一、配置环境 在本机电脑win跑之后依旧爆显存,放到服务器跑:Ubuntu22.04&#xff0c…

使用Zabbix进行服务监控:构建高效稳定的IT服务管理平台

使用Zabbix进行服务监控:构建高效稳定的IT服务管理平台 在当今的数字化时代,IT服务管理(ITSM)对于确保企业IT系统的稳定性和性能至关重要。服务监控是ITSM的重要组成部分,可以帮助企业实时了解IT系统的运行状况&#…

微调Qwen2大语言模型加入领域知识

目录 试用Qwen2做推理安装LLaMA-Factory使用自有数据集微调Qwen2验证微调效果 试用Qwen2做推理 参考:https://qwen.readthedocs.io/en/latest/getting_started/quickstart.html from transformers import AutoModelForCausalLM, AutoTokenizer device "cuda…

极速构建的艺术:Kylin中Cube的并行构建实践

极速构建的艺术:Kylin中Cube的并行构建实践 引言 Apache Kylin是一款开源的分布式分析引擎,专为处理大规模数据集的即时查询而设计。Kylin通过构建数据立方体(Cube)来优化查询性能。随着数据量的不断增长,Cube的构建…

9.6 栅格图层符号化唯一值着色渲染

文章目录 前言多波段彩色渲染唯一值着色QGis设置为唯一值着色二次开发代码实现唯一值着色 总结 前言 介绍栅格图层数据渲染之唯一值着色渲染说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps 多波段彩色渲染唯一值着色 以“with_color_table.tif”数据为例…

硅谷甄选4(项目主体)

1.路由配置 1.1路由组件的雏形 src\views\home\index.vue(以home组件为例) 安装插件: 1.2路由配置 1.2.1路由index文件 src\router\index.ts //通过vue-router插件实现模板路由配置 import { createRouter, createWebHashHistory } fro…

B站学习Java路线

Java 基础 【零基础 快速学Java】韩顺平 零基础30天学会Java JVM 尚硅谷宋红康JVM全套教程(详解java虚拟机) Java 并发 JUC

react-router实现路由拦截,useLocation,useNavigate钩子

路由拦截 react-router中没有直接给出拦截路由的方法,需要手动的去监听路由的变化来拦截路由 路由拦截的要点: 能够识别出目标路由和原始路由(区分跳转前和跳转后)能够在跳转时(跳转前或者跳转后)执行一些…

Python redis获取的结果是字节不是字符串

Python redis获取的结果是字节不是字符串 pool redis.ConnectionPool(hostlocalhost,port6379, passwordREDIS_PWD, decode_responsesTrue)需要指明给结果解码decode_responsesTrue才能返回字符串

图论基础概念(详细讲解)

今天,我们讲解一下图论的概念,首先我们知道图是一个什么东西。 图你可以理解成一个网络系统,两个节点之间可能会有边,边链接两个节点,可能是有向(就比如说a只能往b,或者b只能往c),可能是无向&a…

Vulnhub靶场 | DC系列 - DC1

https://www.vulnhub.com/series/dc,199/ 环境搭建 靶机镜像下载地址:https://www.vulnhub.com/entry/dc-1,292/;需要将靶机和 kali 攻击机放在同一个局域网里;本实验kali 的 IP 地址:192.168.10.146。 渗透测试 1. 信息收集 …

CH16-DOM元素增删改

CH16-DOM元素增删改 本章目标 掌握如何使用DOM获取节点时使用的属性熟练使用DOM节点进行创建、添加、删除、替换 一、使用DOM获取节点时使用的属性 1.1 首尾子节点 firstChild:获取当前节点的首个子节点,注意:换行符、空格等也是节点。 …

【逆向】-异或-分组异或2

IDA查看源代码 src长度32,encrypt函数加密,工4个参数,_FFFC双击,可以看到是个长度为7的固定值FnTest! 加密函数将4个参数又重新命名,混淆视听,但是还是可以看到是嵌套循环,动态调试直接看结果可…

ArcGIS Pro SDK (八)地理数据库 8 拓扑

ArcGIS Pro SDK (八)地理数据库 8 拓扑 文章目录 ArcGIS Pro SDK (八)地理数据库 8 拓扑1 开放拓扑和进程定义2 获取拓扑规则3 验证拓扑4 获取拓扑错误5 标记和不标记为错误6 探索拓扑图7 找到最近的元素 环境:Visual …

C++11中重要的新特性之 lambda表达式 Part two

序言 在上一篇文章中,我们主要介绍了 C11 中的新增的关键词,以及 范围for循环 这类语法糖的使用和背后的逻辑。在这篇文章中我们会继续介绍一个特别重要的新特性分别是 lambda表达式 。 1. lambda表达式 1.1 lambda的定义 C11 中的 lambda表达式 是一种…

昇思25天学习打卡营第19天 | ResNet50迁移学习再续

训练模型部分代码解析 构建Resnet50网络 两行初始化代码 weight_init Normal(mean0, sigma0.02)这行代码定义了一个初始化器weight_init,它将使用均值为0,标准差为0.02的正态分布来初始化网络中的权重。这种初始化策略有助于在网络的初始阶段避免梯度…