如何使用类中的方法名称生成文件?

时间:2011-10-27 01:25:21

标签: ruby-on-rails ruby


我有这个单元测试文件:

class WebsiteCheckPageElements < Test::Unit::TestCase

def setup
 ...
end

def test_achievements_iknow_report_page
  ...
end

def test_achievements_daily_report_page
  ...
end

def test_client_side_report_page
  ...
end
end

我需要编写一个ruby脚本,将测试的名称写入.txt文件。就像是

设置
test_achievements_iknow_report_page
test_achievements_daily_report_page
test_client_side_report_page

提前感谢您的建议。

2 个答案:

答案 0 :(得分:3)

比其他答案更有力的方式:

File.open("test_methods.txt", "w") do |f|
  WebsiteCheckPageElements.instance_methods.each do |method|
    f << "#{method}\n"
  end
end

这实际上将使用Ruby运行时,并且不会在未定义方法的位置(例如在String内)意外匹配def,它将与文件中的其他类不匹配它将正确读取继承层次结构。

答案 1 :(得分:2)

您可以使用一个简单的脚本,使用正则表达式打印与def匹配的行:

<强> match_test_methods.rb

File.open('your_unit_test_file.rb').each_line do |line|
  match = line.match(/def (.+)/)
  puts match[1] if match
end

然后将脚本的结果放在.txt文件中

ruby match_test_methods.rb > test_methods.txt