Еще новичок в Ruby - я посмотрел на некоторые ответы на похожие вопросы, но, честно говоря, я не мог окунуться в них.Использование спасения и обеспечение в середине кода
У меня есть код, который читает CSV-файл. Данные разбиваются на группы по 40-50 строк на запись пользователя и проверяют данные в строках по базе данных, доступной через веб-сайт.
Для каждой записи требуется логин, но после того, как пользователь зарегистрировался в каждой строке в CSV-файле, можно проверить, пока не будет достигнут следующий пользователь, после чего пользователь выйдет из системы.
Все, что работает, однако, если произошла ошибка (например, на веб-сайте, отличном от ожидаемого результата в файле .csv), программа останавливается.
мне нужно что-то, что будет а) по мне сказать, какая строка в файле произошла ошибка б) войти в ряд, который будет выводиться, когда он закончит работу, и III) перезапустить программу из следующей строки в .csv файл
код, который я до сих пор находится ниже
заранее спасибо,
Питер
require 'csv-mapper'
loginrequired = true
Given(/^I compare the User Details from rows "(.*?)" to "(.*?)"$/) do |firstrow, lastrow|
data = CsvMapper.import('C:/auto_test_data/User Data csv.csv') do
[dln, nino, pcode, endor_cd, ct_cd]
end
#Row number changed because Excel starts at 'row 1' and Ruby starts counting at 'row 0'
(firstrow.to_i-1..lastrow.to_i-1).each do |row|
@licnum1 = data.at(row).dln
@licnum2 = data.at(row+1).dln
@nino = data.at(row).nino
@postcode = data.at(row).pcode
@endor_cd = data.at(row).endor_cd
@ct_cd = data.at(row).ct_cd
#Login only required once for each new user-account
if
loginrequired == true
logon_to_vdr #def for this is in hooks
click_on 'P and D'
loginrequired = false
end
#This is the check against the database and is required for every line in the .csv file
check_ctcd #def for this is in hooks
#Need something in here to log errors and move on to the next line in the .csv file
#Compare the ID for the next record and logout if they're different
if @licnum1 == @licnum2
loginrequired = false
else
loginrequired = true`enter code here`
click_on 'Logout'
end
end
end
Удалось ли вам получить обратную трассировку или сообщение об ошибке? Ruby будет печатать эти вещи в STDERR автоматически, когда возникает неуправляемое исключение. Если вы запускаете скрипт из командной строки, этот вывод обычно отображается в окне терминала. Возможно, это работает как запланированная задача, поэтому вы не можете видеть какую-либо информацию, потому что экран исчезнет, как только произойдет ошибка? – DRSE
Я пытаюсь схожу, и я обнаружил, что не могу обойти ожидания RSpec. Он вызывает это исключение, но не переходит к следующей итерации – Tom