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等函数最简单的方法是驱动…

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

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

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…

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

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

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个参数又重新命名,混淆视听,但是还是可以看到是嵌套循环,动态调试直接看结果可…

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

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

Java基础之集合

集合和数组的类比 数组: 长度固定可以存基本数据类型和引用数据类型 集合: 长度可变只能存引用数据类型存储基本数据类型要把他转化为对应的包装类 ArrayList集合 ArrayList成员方法 添加元素 删除元素 索引删除 查询 遍历数组

Linux: Mysql环境安装

Mysql环境安装(Centos) 前言一、卸载多余环境1.1 卸载mariadb1.2 查看并卸载系统mysql和mariadb安装包 二、换取mysql官方yum源三、安装并启动mysql服务3.1 yum源加载3.2 安装yum源3.3 安装mysql服务3.3.1 安装指令3.3.2 GPG密钥问题解决方法3.3.3 查看是…

循环结构(一)——for语句【互三互三】

文章目录 🍁 引言 🍁 一、语句格式 🍁 二、语句执行过程 🍁 三、语句格式举例 🍁四、例题 👉【例1】 🚀示例代码: 👉【例2】 【方法1】 🚀示例代码: 【方法2】…

Cartographer重入门到精通(二):运行作者demo及自己的数据集

在demo数据包上运行cartographer 现在Cartographer和Cartographer的Ros包已经都安装好了,你可以下载官方的数据集到指定的目录(比如在Deutsches Museum用背包采集的2D和3D 数据),然后使用roslauch来启动demo。 注:la…

IO半虚拟化-Virtio学习笔记

参考:《深入浅出DPDK》及大佬们的各种博客 Virtio简介&运行环境 Virtio 是一种用于虚拟化环境中的半虚拟化 I/O 框架,目的是在虚拟机和主机之间提供一种高效的 I/O 机制。关于什么是半虚拟化和全虚拟化:见SR-IOV学习笔记。 YES&#xf…

PDMS二次开发(二十二)——关于1.0.3.1版本升级内容的说明

目录 1.更新内容介绍2.效果演示3.关于重构自动添加焊口功能的说明3.1错误示例 3.问题交流1.创建焊口提示失败2.程序崩溃 1.更新内容介绍 在添加焊口之前先清除当前branch已有焊口;显示清除焊口的个数和添加焊口的个数;重构了自动添加焊口功能&#xff0…

值得关注的数据资产入表

不错的讲解视频,来自:第122期-杜海博士-《数据资源入表及数据资产化》-大数据百家讲坛-厦门大学数据库实验室主办第122期-杜海博士-《数据资源入表及数据资产化》-大数据百家讲坛-厦门大学数据库实验室主办-20240708_哔哩哔哩_bilibili

《A++ 敏捷开发》- 10 二八原则

团队成员协作,利用项目数据,分析根本原因,制定纠正措施,并立马尝试,判断是否有效,是改善的“基本功”。10-12章会探索里面的注意事项,13章会看两家公司的实施情况和常见问题。 如果已经获得高层…