Robot Framework:如何连接到Oracle数据库

时间:2018-03-21 04:22:29

标签: python oracle robotframework

我们正在尝试运行机器人框架进行测试。自动化。此时我仍然处于数据库连接状态。

使用cx_Oracle的数据库连接显示错误,上面写着“没有名称为cx_Oracle的关键字”。如果您有任何想法请帮助。如果您能够提供Oracle dB连接示例的示例,将会很有帮助。

4 个答案:

答案 0 :(得分:0)

检查RobotFramework提供的 DatabaseLibrary

Check Here for more info !!!

DatabaseLibrary Keyword Documentation

数据库连接有两个关键字:

  1. 连接到数据库
  2. 使用自定义参数连接到数据库

答案 1 :(得分:0)

"没有名称为cx_Oracle的关键字"意味着你正在使用' cx_Oracle'作为关键字。 我没有在常用的Robot Extended libraries中看到给定的库。 如果情况是您错误地安装了库并将其正确导入到Robot脚本中:

*** Settings ***
Library   MyLibraryName

然后我希望它在导入时失败。

我同意Dinesh。首先尝试使用数据库库。

或者,如果您不能使用数据库库(使用自定义参数连接到数据库有限制),则可以编写自己的机器人库,该库将重用cx_Oracle python库并将关键字暴露给机器人。它通常是not that complicated,我用pyodbc做到了。

答案 2 :(得分:0)

这确实是一个安装问题。我们不得不使用Anaconda3,并且必须在其site-packages下安装库。我在默认的Python文件夹下有这个。问题现在已经解决了。

答案 3 :(得分:0)

我遇到了同样的问题,这是我找到的解决方法

第1步:安装Oracle Instant Client(32位)(我使用的是Instantclient_18_3,您不必分别安装cx_oracle)

第2步:为Robot安装操作系统文学和数据库库并导入

*** Settings ***
Library           DatabaseLibrary
Library           OperatingSystem

然后在您的机器人脚本中,添加以下变量,并确保它与测试用例一起使用(不在外部资源文件中)

*** Variables ***
${DB_CONNECT_STRING}    'DB_USERNAME/DB_PASSWORD@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=YOUR_DB_OR_HOST)(PORT=YOUR_PORT))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=YOUR_SID)))'

然后,您可以使用以下关键字设置环境变量并运行查询

*** Keywords ***
Connect To DB
    [Arguments]    ${DB_CONNECT_STRING_VALUE}
    Set Environment Variable    PATH    PATH_TO_YOUR_INSTANT_CLIENT\\instantclient_18_3
    Set Global Variable    ${DB_CONNECT_STRING_VALUE}
    #Connect to DB
    connect to database using custom params    cx_Oracle    ${DB_CONNECT_STRING_VALUE}

Run Query and log results
    [Arguments]    ${QUERY_TO_EXECUTE}
    Set Global Variable    ${QUERY_TO_EXECUTE}
    ${queryResults}    Query    ${QUERY_TO_EXECUTE}
    log to console    ${queryResults}

Disconnect From DB
    #Disconnect from DB
    disconnect from database

最后,在您的测试用例中,像这样运行它

*** Test Cases ***
Test Connetion
    [Tags]    DBConnect
    Connect To DB    ${DB_CONNECT_STRING}
    Run Query and log results    SELECT sysdate from Dual

这应该适合您