1

我有一个非常基本的问题,我无法找到任何解决方案。

所以我使用带有 testunit 的 Watir Webdriver 来测试我的 Web 应用程序。我有一个测试方法,我想针对多组测试数据运行它。

虽然我当然可以使用旧的循环技巧来运行它,但这会显示为只有 1 个测试运行,这不是我想要的。

我知道在 testng 我们有 @dataprovider,我在 testunit 中寻找类似的东西。

任何帮助!

这是我到目前为止所拥有的:

[1,2].each do |p|
define_method :"test_that_#{p}_is_logged_in" do
 # code to log in
end
end

这工作正常。但我的问题是我将如何以及在哪里创建可以循环访问的数据。我正在从 excel 中读取我的数据,说我有一个从 excel 中获得的哈希列表,例如 [{:name =>abc,:password = > test},{:name =>def,:password => test}]

当前代码状态:

    class RubyTest < Test::Unit::TestCase

    def setup
      @excel_array = util.get_excel_map //This gives me an array of hash from excel
    end

     @excel_array.each do |p|
     define_method :"test_that_#{p}_is_logged_in" do
       //Code to check login
     end
     end

我正在努力运行循环。我在类声明行收到一条错误消息,提示“nil:NilClass (NoMethodError) 的未定义方法‘每个’”

4

1 回答 1

1

你想做这样的事情:

require 'minitest/autorun'

describe 'Login' do
  5.times do |number|
    it "must allow user#{number} to login" do
      assert true # replace this assert with your real code and validation
    end
  end
end

当然,我在这里混合了规范和测试/单元断言措辞,但无论如何,在断言所在的位置,您将放置断言/期望。

就这段代码而言,它将通过 5 次,如果您以故事的形式报告,它将根据用户编号进行更改以进行适当的测试。

从哪里获取数据,即丢失的代码部分,您还没有尝试获取错误。

于 2013-10-29T13:35:31.453 回答