【问题标题】:Can I run a single test in a suite?我可以在套件中运行单个测试吗?
【发布时间】:2016-11-05 01:04:10
【问题描述】:

我已经为我的结构 (https://github.com/stretchr/testify#suite-package) 设置了一个测试套件。在我能够通过仅指定一个模式来运行单个测试之前:

go test -v ./services/gateways/... -run mytest

这种方法在转换后不起作用。运气不好还是有办法?

【问题讨论】:

  • -m 是否符合您的预期?从文档中:Regular expression to select the methods of test suites specified command-line argument "-m" 可能与-run 结合使用来指定套件?
  • 根据帮助,“run 是 - 只运行那些匹配正则表达式的测试和示例。”该文件的内容只有一个调用套件方法的测试。因此,go test 在分析文件后如果查找类似 @​​987654328@...
  • 是的,-run 选择要运行的 Test* 函数,它启动一个特定的套件,-m 标志将过滤要执行的套件方法。

标签: go testify


【解决方案1】:

您可以通过指定 -testify.m 参数来运行单个方法。

运行this suite method的命令是:

go test -v github.com/vektra/mockery/mockery -run ^TestGeneratorSuite$ -testify.m TestGenerator

【讨论】:

  • 现在flag已经改成-m (go version go1.9)
  • 很遗憾,您不能只使用 .only 或其他测试框架中可以执行的操作来标记测试。
【解决方案2】:

我认为您是使用该软件包的 SOL,但这是与 go 1.7 的股票测试工具类似的方法:

package main

import "testing"

func TestSuite1(t *testing.T) {
    t.Run("first test", func(t *testing.T) { t.Fail() })
    t.Run("second test", func(t *testing.T) { t.Fail() })
}

func TestSuite2(t *testing.T) {
    t.Run("third test", func(t *testing.T) { t.Fatal("3") })
    t.Run("fourth test", func(t *testing.T) { t.Fatal("4") })
}

一个套件的示例输出:

 therealplato/stack-suites Ω go test -run TestSuite1       
--- FAIL: TestSuite1 (0.00s)
    --- FAIL: TestSuite1/first_test (0.00s)
    --- FAIL: TestSuite1/second_test (0.00s)
FAIL
exit status 1
FAIL    github.com/therealplato/stack-suites    0.005s

一项测试的示例输出:

 therealplato/stack-suites Ω go test -run TestSuite2/third 
--- FAIL: TestSuite2 (0.00s)
    --- FAIL: TestSuite2/third_test (0.00s)
        main_test.go:11: 3
FAIL
exit status 1
FAIL    github.com/therealplato/stack-suites    0.005s

【讨论】:

  • 有趣。也许TestSuite2/third 是关键。我会尽力。谢谢!
猜你喜欢
  • 2013-10-17
  • 1970-01-01
  • 2016-12-21
  • 2015-08-02
  • 2014-03-25
  • 1970-01-01
  • 2011-07-09
  • 1970-01-01
  • 2016-11-24
相关资源
最近更新 更多