【问题标题】:Read csv file for datadriven testing in robotframework读取 csv 文件以在机器人框架中进行数据驱动测试
【发布时间】:2021-06-13 00:37:42
【问题描述】:

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

解析变量“${Tlogdata.0}”失败:语法错误:解析时出现意外 EOF(第 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 代码是问题所在,但我仔细检查了所有我可能在这里忽略的东西:

在 datamanager 关键字文件中,我创建了以下关键字:

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

比我创建了一个带有 for 循环的“循环”关键字:

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

在我的测试用例中,我定义了一个变量,该变量从我的 datamanager 关键字中获取其结果,并使用循环关键字来遍历 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% 确定问题出在我的脚本中。我希望有人能指出我正确的方向。

【问题讨论】:

    标签: python robotframework


    【解决方案1】:

    您的列表索引错误。而不是${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]}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-25
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多