2017-01-23 34 views
1

我试图在作为我的测试设置的一部分尝试删除它之前检查某个项目是否在数据库中。Robot Framework数据库库InterfaceError:与内置关键字组合时不是查询

的问题:“检查是否存在于数据库”关键字的工作对自己,而不是在与内置的关键字“运行关键字和返回状态”相结合。

是得到错误: 'InterfaceError:不查询'

代码如下:

***Settings*** 

Documentation  RF DB Test 

Library DatabaseLibrary 


***Variables*** 
${token} '<token>' 

***Test Cases*** 

Set Log Level 
    Set Log Level  TRACE 

Connect to DB 
    Connect To Database Using Custom Params  cx_Oracle <connection details> 

Cleanup DB 
    ${EntryExists}=  Run Keyword and Return Status  Check if Exists in Database select * from MY_TABLE where token=${token} 

编辑

感谢您的格式的答案和建议人们。 我也收到了错误此行

Query  delete from MY_TABLE where token=${token} 

10:14:40.984 FAIL InterfaceError:不查询 10:14:40.984 DEBUG回溯(最近通话最后一个): 文件” ...的Python \ Python35 \ lib \ site-packages \ DatabaseLibrary \ query.py“,第56行,查询 allRows = cur.fetchall()

基本上,我试图使用delete命令与Query关键字,但发现未记录的关键字'执行Sql字符串'工作

Execute Sql String  delete from MY_TABLE where token=${token} 
+0

这似乎是与sql形成的问题。将sql分配给一个字符串变量,然后将其传递给检查数据库$ {sql} – Shijo

+1

中是否存在“在数据库中检查是否存在”与查询语句之间只有一个空格。另外,请显示完整且准确的错误消息。 –

回答

0
  1. 保持缩进一致。我会建议使用4个空格(设置你的IDE,就是这样)。我可以看到4个空格,5个空格,2个空格,最重要的是:Check if Exists in Databaseselect * from MY_TABLE where token=${token}之间只有一个空格。 请注意,RF需要超过两个空格作为分隔符(请参阅:http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#plain-text-format),但只有一个空间是不够的。
  2. 为什么您为每个关键字创建单独的测试用例?

我想你的测试用例可能看起来像:

***Test Cases*** 
Nice Name Of My Test Case 
    [Documentation] Let's not forget to describe 
    [Setup] Set Log Level TRACE 
    [Teardown] Disconnect From Database 
    Connect To Database Using Custom Params cx_Oracle <connection_details> 
    ${entry_exists} Run Keyword And Return Status  Check If Exists In Database select * from MY_TABLE where token=${token} 
    Run Keyword If '${entry_exists}' == 'True' DB Cleanup 

显然,目前所有的步骤是不够的,任何有意义的测试案例,所以它们可能最终会成为一个测试设置,但这是,我相信你的意思。

0

添加4个空格标签后面提到的关键字“检查数据库中是否存在”。

${EntryExists}=  Run Keyword and Return Status  Check if Exists in Database  select * from MY_TABLE where token=${token} 

“检查数据库中是否存在”关键字将返回布尔值(通过/失败)。所以你不需要使用“运行关键字和返回状态”