我的webapp中有导出和导入功能,我想测试导出到xls并使用watir从xls功能导入。请有人能为我提供这个想法吗?
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)
我的问题的解决方案是:
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