小编use*_*661的帖子

使用Ruby和Minitest,如何使用不同的数据运行相同的测试用例,仅由列表控制

我有Ruby 2.0代码,可以使用手机号码进行操作,我想用MiniTest进行测试.我有一个函数,它接受一个电话号码参数并测试它(包括断言).每次我调用该函数时,我都希望它成为一个新的测试用例.像这样的东西:

listOfPhoneNumbersForTesting.each { |phone|   testphone phone }  
Run Code Online (Sandbox Code Playgroud)

我不想要的是这个:

class test2125551212 < MiniTest::Unit::TestCase
    def t2125551212 
        testphone "2125551212"
    end
end
Run Code Online (Sandbox Code Playgroud)

...重复10次,20次或100次测试每个电话号码......

显然,我可以将循环代码放在MiniTest :: Unit :: TestCase中,但无论我测试多少个电话号码,都会产生一个测试用例,我不喜欢这样.(另外,如果其中一个断言失败,那么就不再测试电话号码了,我不想要那个!)另外,第二个表格看起来像是违反DRY,因为类名,函数名和参数都包含电话号码.

不知怎的,我觉得我应该能够有一个名为TestPhone的类,并使用电话号码参数创建它,并将其导入MiniTest框架.但我愿意使用setup(),Fixtures,元编程,或者其他任何东西,如果它能工作的话.

listOfPhoneNumbersForTesting.each { |phone|   TestPhone.new phone }
Run Code Online (Sandbox Code Playgroud)

TestPhone是TestCase的子类,最终调用testphone来完成工作.

基本上,我想要的是:1.一个电话号码列表,如果我在列表中添加一个数字,我会在报告输出中再获得一个TestCase.2.如果与一个电话号码相关的测试失败,则其余测试仍在测试中.3.所有电话号码都进行相同的测试,其中包括几个断言.

非常感谢!

ruby minitest

18
推荐指数
1
解决办法
3719
查看次数

标签 统计

minitest ×1

ruby ×1