读取 csv 文件以在机器人框架中进行数据驱动测试

Read csv file for datadriven testing in robotframework

我目前正在尝试使用 python 自定义库从 csv 文件中使用机器人框架进行一些数据驱动测试。不过,我 运行 遇到了一些问题,如果有人能指出正确的方向,我将不胜感激 这是我得到的错误:

Resolving variable '${Tlogdata.0}' failed: SyntaxError: unexpected EOF while parsing (, line 1)

我要处理的csv目前有两条记录(我试过没有,有单码,双码):

1-KR8P27,11.0,1000
1-KR8P27,12.0,1001

我怀疑问题出在自定义库上。我尝试了很多调整我的代码,但根据我的发现和我的 Python 知识(这无疑是非常基础的)我找不到任何问题。这是我目前拥有的:

import csv


def read_csv_file(filename):
data = []
with open(filename,) as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        data.append(row)
return data

我在 Robot Framework 中使用了更多关键字来使用此自定义库从我的 csv 中获取数据。虽然我怀疑我的 python 代码有问题,但我仔细检查了所有我可能忽略的东西:

在数据管理器关键字文件中,我创建了以下关键字:

 Get CSV Data
  [Arguments]  ${FilePath}
  ${Data} =  read csv file  ${FilePath}
  [Return]  ${Data}

然后我创建了一个带有 for 循环的 'looping' 关键字:

Check multiple results
[Arguments]    ${tlogdatas}
FOR    ${tlogdata}    IN    ${tlogdatas}
    Check result TLOG3    ${tlogdata}

我在循环中调用的关键字已经在没有数据驱动设置的测试用例中使用,并且有效。只有变量的名称不同,才能使其与数据驱动的事物一起使用。关键字如下所示:

Check result TLOG3
  [Arguments]    ${Tlogdata}
  ${queryResults} =    query       select x_ord_pts_earn, total_amt from siebel.s_order where 
  contact_id = ${Tlogdata.0} and total_amt = ${Tlogdata.1}    and X_ORD_PTS_earn = ${Tlogdata.2}
  # log     @{queryResults[0][1]}
   ${dbvalue} =    set variable    ${queryResults}
   ${DB ordptsearn} =    set variable    ${queryResults[0][0]}
   ${DB contact_id} =    set variable    ${queryResults[0][1]}
   should be equal as integers     ${DB ordptsearn}     ${Tlogdata.2}
   should be equal as strings      ${DB contact_id}     ${Tlogdata.1}
    END

在我的测试用例中,我定义了一个变量,该变量从我的数据管理器关键字中获取结果,并使用循环关键字遍历 csv 值:

Check TLOG results from CSVFile
${Tlogdata} =    DataManager.Get CSV Data    ${TLOG_RESULTS_CSVPath}
 TLOG.Check multiple results    ${Tlogdata}

显示根据报告文件从 csv 中获取的值可能也是值得的:

${Tlogdata} = [["'1-KR8P27'", "'11.0'", "'1000'"], ["'1-KR8P27'", "'12.0'", "'1001'"]]

我希望这有点清楚,我的理解是退出一些文本。但我不能 100% 确定问题出在我的脚本中。我希望有人能给我指出正确的方向。

您为列表编制的索引有误。而不是 ${Tlogdata.0} 你应该有 ${Tlogdata[0]}, 等等..

这是一个简单的例子:

*** Test Cases ***
Test
    ${Tlogdata}=    Evaluate    [["'1-KR8P27'", "'11.0'", "'1000'"], ["'1-KR8P27'", "'12.0'", "'1001'"]]
    Log    ${Tlogdata[0]}
    Log    ${Tlogdata[1]}
    Log    ${Tlogdata[0][1]}
    Log    ${Tlogdata[1][1]}