#ruby-on-rails #ruby
#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, который будет записывать имена тестов в текстовый файл. Что-то вроде
настройка
test_achievements_iknow_report_page
test_achievements_daily_report_page
test_client_side_report_page
Заранее благодарю за предложения.
Комментарии:
1. Почему это помечено как «ruby-on-rails»?
Ответ №1:
Более надежный способ, чем другой ответ:
File.open("test_methods.txt", "w") do |f|
WebsiteCheckPageElements.instance_methods.each do |method|
f << "#{method}n"
end
end
Это фактически будет использовать среду выполнения Ruby и не будет подвергаться случайному сопоставлению def
в местах, где он не определяет метод (например, внутри строки), он не будет соответствовать другим классам в файле и будет правильно считывать иерархию наследования.
Ответ №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
Затем поместите результат выполнения скрипта в текстовый файл
ruby match_test_methods.rb > test_methods.txt