在尝试将其作为测试设置的一部分删除之前,我正在尝试检查项目是否在数据库中。
问题:“检查数据库中是否存在”关键字可以自行运行,但与内置关键字“运行关键字和返回状态”结合使用时则无效
收到错误:' InterfaceError:not a query '
代码如下:
***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 Traceback(最近一次调用最后一次): 在查询中文件“... Python \ Python35 \ lib \ site-packages \ DatabaseLibrary \ query.py”,第56行 allRows = cur.fetchall()
基本上,我试图将delete命令与Query关键字一起使用,但发现未记录的关键字'Execute Sql String'正常工作
Execute Sql String delete from MY_TABLE where token=${token}
答案 0 :(得分:0)
Check if Exists in Database
和select * from MY_TABLE where token=${token}
之间只有一个空格。
请注意,RF需要两个以上的空格作为分隔符(请参阅:http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#plain-text-format),但一个空间是不够的。我认为你的测试用例看起来像:
***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
显然,目前所有步骤都不足以应对任何有意义的测试用例,它们最终可能最终成为测试设置,但我相信,这就是你的意思。
答案 1 :(得分:0)
在关键字&#34后添加 4个空格或标签;检查数据库中是否存在&#34;如下所述。
${EntryExists}= Run Keyword and Return Status Check if Exists in Database select * from MY_TABLE where token=${token}
&#34;检查数据库中是否存在&#34; keyword将返回布尔值(通过/失败)。因此,您不需要使用&#34;运行关键字和返回状态&#34;