Ruby 黄瓜桌:换
我试图做的是迭代列列表,对该列运行函数,保存结果,使用.diff将预期结果与实际结果进行比较。这样的话,根据测试完成的方式,我猜一个漂亮的绿色和红色表格 因此,我有一个如下所示的表:Ruby 黄瓜桌:换,ruby,cucumber,Ruby,Cucumber,我试图做的是迭代列列表,对该列运行函数,保存结果,使用.diff将预期结果与实际结果进行比较。这样的话,根据测试完成的方式,我猜一个漂亮的绿色和红色表格 因此,我有一个如下所示的表: | COLUMN_NAME | result | | RecordNum | pass | | MasterCompanyTicker | pass | 对每个列名执行sql脚本,根据结果返回“通过”或“失败”
| COLUMN_NAME | result |
| RecordNum | pass |
| MasterCompanyTicker | pass |
对每个列名执行sql脚本,根据结果返回“通过”或“失败”。功能如下:
Then(/^these columns are expected to be not null$/) do |columns|
# expected is an instance of Cucumber::Ast::Table
WorkTable.logger.info title_line('Columns cannot be null')
sql = File.readlines(File.join(ENV['ms_home'],'db','scripts','test','pass_or_fail_template.sql'))
sql = (sql.map {|l| l.strip}).join(' ')
results = columns.clone
results.hashes.each {|row|
st = sprintf(sql,"#{WorkTable.table_name}","#{WorkTable.table_name}.#{row['COLUMN_NAME']}")
row['result'] = WorkTable.connection.select_all(st.encode('utf-8')).first['result']
}
columns.diff!(results,surplus_row: false)
end
results = []
columns.hashes.each {|row|
st = sprintf(sql,"#{WorkTable.table_name}","#{WorkTable.table_name}.#{row['COLUMN_NAME']}")
results << {
'COLUMN_NAME' => row['COLUMN_NAME'],
'result' => WorkTable.connection.select_all(st.encode('utf-8')).first['result']
}
}
columns.diff!(results,surplus_row: false)
sql脚本正在正确运行;有一个返回字符串“fail”。所以我希望第['result']行是'fail'。如果我在赋值后立即执行pp,我确实会看到该行['result']='fail'
{"COLUMN_NAME"=>"TermDate", "result"=>"fail"}
但是,如果在results.hashes块之后对整个表执行pp结果,则不是“fail”。它是它的原始值“pass”
| TermDate | pass |
我做错了什么?我认为这是一种巧妙的方法,可以收集《OnSwoop》中的所有结果,并使用table.diff进行比较。我看过其他类似的帖子,也试着遵循这些建议,但对我来说不起作用
感谢您的时间和关心,
天啊,我很抱歉。在我发布了带有截断主题行的问题后,我有了解决方案。解决办法如下:
Then(/^these columns are expected to be not null$/) do |columns|
# expected is an instance of Cucumber::Ast::Table
WorkTable.logger.info title_line('Columns cannot be null')
sql = File.readlines(File.join(ENV['ms_home'],'db','scripts','test','pass_or_fail_template.sql'))
sql = (sql.map {|l| l.strip}).join(' ')
results = columns.clone
results.hashes.each {|row|
st = sprintf(sql,"#{WorkTable.table_name}","#{WorkTable.table_name}.#{row['COLUMN_NAME']}")
row['result'] = WorkTable.connection.select_all(st.encode('utf-8')).first['result']
}
columns.diff!(results,surplus_row: false)
end
results = []
columns.hashes.each {|row|
st = sprintf(sql,"#{WorkTable.table_name}","#{WorkTable.table_name}.#{row['COLUMN_NAME']}")
results << {
'COLUMN_NAME' => row['COLUMN_NAME'],
'result' => WorkTable.connection.select_all(st.encode('utf-8')).first['result']
}
}
columns.diff!(results,surplus_row: false)
我想把一张桌子和另一张桌子分开。这不是正确的做法。我需要区分一个表和一个散列数组。如果操作正确,我将得到以下输出:
| ActiveDate | pass |
| TermDate | pass | <<
| TermDate | fail | <<
| create_user | pass |
| create_dt | pass |
这就是我要找的
对不起打扰了。希望这能帮助其他人。
dvn