在Ruby单元测试失败时更改变量

时间:2014-08-18 20:23:00

标签: ruby unit-testing testunit

我在下面的代码中使用Ruby Unit测试。

assert_equal(x, 'strin')

如果此测试失败并且测试仍然失败,我想更改变量。我怎样才能做到这一点? 我在python中使用以下代码做了同样的事情。

try:
  self.assertEqual(self.client.testString(''), '')
except AssertionError, e:
  test_basetypes_fails = True
  raise AssertionError( e.args )

2 个答案:

答案 0 :(得分:2)

Ruby的#assert_equal库中的test/unit方法在失败的断言中引发Test::Unit::AssertionFailedError或(MiniTest::Assertion在ruby 1.9.3或更高版本中),因此:

begin
  assert_equal(x, 'strin')
rescue Test::Unit::AssertionFailedError
  # whatever code
  raise
end

答案 1 :(得分:1)

Ruby的单元库中的assert_equal方法不会引发异常,因此您无法使用在python中执行的相同方法,但您想要做的事情很简单。你真的只是检查两个值的相等性并根据它做一些事情:

if x == 'strin'
  # do something here when the "assert" succeeds
else
  test_basetypes_fails = true
  assert_equal(x, 'strin') # fail the test as normal
end

重点是直接使用==执行初始相等性检查而不会使测试失败。