Go-知识测试-测试参数

news2024/9/21 4:34:09

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.coloradmin.cn/o/1923362.html

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

相关文章

c++ - 多态

文章目录 一、多态的概念二、多态使用三、多态的原理 一、多态的概念 1、概念: 多态就是具有多种形态,可以理解为同一个行为不同对象去完成表现出不同的状态,如: 二、多态使用 1、构成多态的条件 (1)派…

从线性变换的视角理解矩阵范数与行列式

在线性代数这一数学分支中,矩阵作为描述线性变换的工具,扮演着至关重要的角色。矩阵的范数和行列式是两个核心概念,它们分别从不同的角度揭示了矩阵及其所代表的线性变换的性质。本文旨在从线性变换的视角出发,探讨矩阵范数与行列…

C#小结:未能找到类型或命名空间名“xxx”(是否缺少 using 指令或程序集引用?)

方案一:移除这些失效的引用,下载对应版本的dll,重新添加引用 方案二:项目右键属性-调整目标框架版本(一般是降低版本) 方案三:调整编译顺序: 项目A:引用1、引用2 &…

底软驱动 | Linux用户空间与内核空间通信(Netlink通信机制)

1,什么是Netlink通信机制 Netlink是linux提供的用于内核和用户态进程之间的通信方式。但是注意虽然Netlink主要用于用户空间和内核空间的通信,但是也能用于用户空间的两个进程通信。只是进程间通信有其他很多方式,一般不用Netlink。除非需要用…

【pytorch】手写数字识别

https://blog.csdn.net/qq_45588019/article/details/120935828 基本均参考该博客 《深度学习原理Pytorch实战》 初步处理 导包 import torch import numpy as np from matplotlib import pyplot as plt from torch.utils.data import DataLoader from torchvision import tr…

esp32 usb cdc串口读写

void setup() { Serial.begin(); // 在USB CDC On Boot使能(Enabled)情况下,这里是USBCDC Serial.setDebugOutput(true); } void loop() { if (Serial.available() > 0) { // 检查是否有可用的数据 String input Serial.readS…

大模型应用中什么是IFT(指令微调)?

大模型应用中什么是IFT(指令微调)? 背景 随着人工智能技术的发展,特别是自然语言处理(NLP)领域的进步,预训练语言模型(如GPT-3、BERT)已经展现出了强大的语言理解和生成…

少儿编程 2024年6月电子学会图形化编程等级考试Scratch二级真题解析(判断题)

2024年6月scratch编程等级考试二级真题 判断题(共10题,每题2分,共20分) 26、下列积木的运算结果为false 答案:错 考点分析:考查逻辑运算符的使用,60>50为true,取反为false&…

Java高频面试基础知识点整理3

干货分享,感谢您的阅读!背景​​​​​​高频面试题基本总结回顾(含笔试高频算法整理) 最全文章见:Java高频面试基础知识点整理 (一)Java基础高频知识考点 针对人员: 1.全部人员都…

笔记 3 :linux 0.11 中的重要的全局变量 (b)

(15) 接着介绍缓冲区初始化,首先介绍一个全局量 end ,表示 源代码编译的终点,随后就是缓冲区: 上图里也介绍了关于缓冲区的其它几个全局变量。全局数组 hash_table 的位置肯定是在 end 以前定义的。end 后为…

算法学习笔记(8.4)-完全背包问题

目录 Question: 图例: 动态规划思路 2 代码实现: 3 空间优化: 代码实现: 下面是0-1背包和完全背包具体的例题: 代码实现: 图例: 空间优化代码示例 Question: 给定n个物品…

Python数据分析案例51——基于K均值的客户聚类分析可视化

案例背景 本次案例带来的是最经典的K均值聚类,对客户进行划分类别的分析,其特点是丰富的可视化过程。这个经典的小案例用来学习或者课程作业在合适不过了。 数据介绍 数据集如下: 客户的编码,性别,年龄,年收入&#…

创建yum源、NFS共享存储

1. YUM源的提供方式 1.1 配置本地源仓库 cd /etc/yum.repos.d/ vim local.repo [local] // 仓库类别 namelocal // 仓库名称 baseurlfile:///mnt // 指定 URL 访问路径为光盘挂载目录 enabled1 …

UML建模案例分析-类图中的关系

概要 类图之间的关系比较多,绝大多数情况下重点关注的还是关联关系、组合、聚合这三种,最终是如何对应到代码上的。 例子 以订单为例:订单和订单项之间是组合关系,这和数据库实体之间不一样。数据库实体有主外键,开…

绘画平台小程序的设计

管理员账户功能包括:系统首页,个人中心,学生管理,讲师管理,课程类型管理,课程信息管理,课程购买管理,作业类型管理 开发系统:Windows 架构模式:SSM JDK版本&…

24/07/08数据结构(2.1203)顺序表实现

size属于结构体的作用域 如果要访问一个结构体的指针用-> 如果要访问一个结构体的变量用. 点操作 #include<stdio.h> #include<stdlib.h> #include<string.h> #include"seqlist.h" //typedef struct seqList{ // SLDataType* _data; //需…

SpringBoot3.3.0升级方案

本文介绍了由SpringBoot2升级到SpringBoot3.3.0升级方案&#xff0c;新版本的升级可以解决旧版本存在的部分漏洞问题。 一、jdk17下载安装 1、下载 官网下载地址 Java Archive Downloads - Java SE 17 Jdk17下载后&#xff0c;可不设置系统变量java_home&#xff0c;仅在id…

Leetcode 剑指 Offer II 086.分割回文串

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个字符串 s &#xff0c;请将 s 分割成一些子串&#xff0…

YOLOv10改进 | 特殊场景检测篇 | 单阶段盲真实图像去噪网络RIDNet辅助YOLOv10图像去噪(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是单阶段盲真实图像去噪网络RIDNet&#xff0c;RIDNet&#xff08;Real Image Denoising with Feature Attention&#xff09;是一个用于真实图像去噪的卷积神经网络&#xff08;CNN&#xff09;&#xff0c;旨在解决现有去噪方法在处理…

零信任作为解决方案,Hvv还能打进去么?

零信任平台由“中心组件服务”三大部分构成&#xff0c;以平台形式充分融合软件定义边界&#xff08;SDP&#xff09;、身份与访问管理&#xff08;IAM&#xff09;、微隔离 &#xff08;MSG&#xff09;的技术方案优势&#xff0c;通过关键技术的创新&#xff0c;实现最佳可信…