0

У меня есть функция экспорта и импорта в моем webapp, и я хочу протестировать экспорт в xls и импортировать из xls с помощью watir. Пожалуйста, может кто-нибудь дать мне идею для этого?тест watir для функции экспорта и импорта

class TestBasicExport < MiniTest::Unit::TestCase 
def setup 
    login_page = @@site.login_page.open # open the page to login 
    search_page = login_page.login # login and land on the search page 
    @@export_page = search_page.export # click on the export link to goto export page 
end 

def test_basic_export_works 
    export = @@export_page.export # it will click on the exprt button 
    assert @@export_page.loaded?, "Export page failed to load" 

rescue Watir::Exception, Watir::Wait::TimeoutError => e 
    puts "Some field not found: #{e}" 
    assert(false, "Current page is " + @@export_page.browser.url) 
end 
end 

Я могу нажать на кнопку экспорта с указанным кодом и через несколько секунд, он бросает исключения, очевидно, (потому что, экспорт занимает несколько раз, чтобы завершить в зависимости от объема данных):

Run options: --seed 23218 

# Running tests: 

E 

Finished tests in 75.866195s, 0.0132 tests/s, 0.0000 assertions/s. 

1) Error: 
test_basic_export_works(TestBasicExport): 
Timeout::Error: Timeout::Error 

Пожалуйста, сделайте это, чтобы заполнить это объявление.

Благодаря

+0

Итак, вы * ожидали * это принять "долгое" время (как несколько минут)? Если да, возможно, вы должны добавить «официанта» в свой код. Подождите, пока элемент будет присутствовать, или один, чтобы уйти, как только будет выполнен импорт/экспорт. Вы пробовали это? –

+0

Да, я добавил '' 'wait_until_present''' для другого события после экспорта и теперь он работает. Спасибо – przbadu

+0

Может быть, вам приятно включить ответ на свой вопрос здесь, а затем принять его, чтобы ваш вопрос больше не появлялся в поисках оставшихся без ответа вопросов. –

ответ

0

Решение моей проблемы:

class TestBasicExport < MiniTest::Unit::TestCase 
    def setup 
    login_page = @@site.login_page.open # open the page to login 
    search_page = login_page.login # login and land on the search page 
    @@export_page = search_page.export 
    assert @@export_page.loaded?, "Export page failed to load!" 

    # find number of export.xls file before downloading and save it in 
    # some variable 
    if @@export_page.count_export_file == 1 
     @@export_page.remove_export_file 
    end 
    # delete export file if already exists and confirm it 
    @number_of_files = @@export_page.count_export_file 
    assert_equal(0, @number_of_files, "Export file already exists") 

    @@site.download_directory_setup 

    @@export_page.export 
    assert @@export_page.completed?, "Export failed!" 
    end 

    def test_basic_export_works 
    # verify file is downloaded 
    assert_equal(1, @@export_page.count_export_file, "Export did not happened") 

    # check for downloaded file is having valid rows 
    assert_equal(true, @@export_page.verify_headers? , "Downloaded file in invalid") 

    assert_equal(true, @@export_page.verify_download?, "Excel file is not having all datas") 
    rescue Watir::Exception, Watir::Wait::TimeoutError => e 
    puts "Some field not found: #{e}" 
    assert(false, "Current page is " + @@export_page.browser.url) 
    end 
end 

count_export_file и remove_export_file выглядит следующим образом:

# this method will count the number of export.xls file in project directory 
def count_export_file 
    Dir[File.join("#{file_path}/", 'export.xls')].count { |file| File.file?(file) } 
end 

# method for removing file from project directory 
def remove_export_file 
    File.delete("#{file_path}/" + 'export.xls') 
end 
Смежные вопросы