go test -coverpkg的使用,和gotest测试代码自动生成,覆盖率

目前的问题:

在正式项目中可能源代码测试代码不是在同一个目录,go test -v -cover这条命令就不好统计测试用例对源代码的覆盖率。

问题展示:

此时unittest.go(源代码),unittest_test.go(测试代码)。这是不在一个文件。
两个文件在同一个文件目录go test -v -cover就可以了。或者这样指定文件go test -v -cover unittest_test.go(测试代码) unittest.go(源代码)
在这里插入图片描述
不在,则下面几个方法都可以:

  1. go test -v -cover -coverpkg=../unittest 这是cd到zidongtest目录下
  2. go test -v -cover -coverpkg=./unittest zidongtest/unittest_test.go 这是cd 到和main同级的目录。
  3. go test -v -cover -coverpkg=./unittest /绝对路径/go-testd/zidongtest/或者go test -v -cover -coverpkg=./unittest /home/qinyu/go_vscode/go-testd/zidongtest/unittest_test.go都是cd到mian同路径

分析命令:

-v 输出的更加详细
-cover 是输出测试覆盖率。这就需要源文件了。
-coverpkg 是测试代码所依赖的源文件所在包。这就是说,不是目录下的.go文件,而是直接是包就可以了。

其他收获:

  1. gotest 可以自动生成_test.go文件(这是多测试的框架
    找到gopath下,执行 go intstall github.com/cweill/gotests@latest
    这样在bin下会有个gotest。可以把它加入环境变量,这样方便用。
    gotest -all -w . 或者 gotest -all -w 具体文件.go

  2. testfiy断言。就是把注释部分代替,这样少了些if语句。

import (
	"testing"
    "zidong/unittest"
	"github.com/stretchr/testify/assert"
)
...
for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			// if got := Add(tt.args.a, tt.args.b); got != tt.want {
			// 	t.Errorf("Add() = %v, want %v", got, tt.want)
			// }
			got := unittes.Add(tt.args.a, tt.args.b)
			assert.Equal(t, tt.want, got)
		})
	}
  1. 可以写个shell脚本
    先vim zidong.sh
    然后 chmod 777 zidong.sh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TestNG结合Test-Asserted可以实现强大的接口自动化测试框架,以下是一个简单的代码实现示例: 1. 首先引入TestNG和Test-Asserted的依赖库: ``` <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.3.0</version> </dependency> <dependency> <groupId>com.jayway.restassured</groupId> <artifactId>rest-assured</artifactId> <version>4.3.0</version> </dependency> ``` 2. 创建一个TestNG测试类: ``` import org.testng.annotations.Test; @Test public class ApiTest { } ``` 3. 在测试类中添加测试方法,使用Test-Asserted发送HTTP请求并验证响应: ``` import static com.jayway.restassured.RestAssured.*; import static org.hamcrest.Matchers.*; @Test public void testApi() { given() .param("key", "value") .when() .get("/api/endpoint") .then() .statusCode(200) .body("response", equalTo("expectedValue")); } ``` 在这个示例中,我们使用了RestAssured库来发送HTTP请求并验证响应。我们首先使用given()方法指定请求参数,然后使用when()方法发送请求,最后使用then()方法验证响应的状态码和响应体中的值。 4. 运行测试方法: 可以使用IDE或者maven命令来运行测试方法。例如,使用maven命令`mvn test`来运行所有的TestNG测试方法。 这就是一个简单的TestNG结合Test-Asserted实现的接口自动化测试框架示例。当然,实际项目中可能需要更多的配置和优化,但这个示例可以作为一个起点来进行开发

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值