【问题标题】:How to read a cx_Oracle.OBJECT with type cx_Oracle.ObjectType SYS.XMLTYPE in robotframework如何在机器人框架中读取 cx_Oracle.ObjectType SYS.XMLTYPE 类型的 cx_Oracle.OBJECT
【发布时间】:2017-02-14 18:40:46
【问题描述】:

我连接到 oracle 数据库并从表中获取了一些列。 它给了其中一列cx_Oracle.OBJECT,类型为<cx_Oracle.ObjectType SYS.XMLTYPE>

我需要读取其中的 XML 数据并进行验证。

我知道XML Library 存在于机器人框架中,用于解析对象,它不接受cx_Oracle.OBJECT,如何读取<cx_Oracle.ObjectType SYS.XMLTYPE> 类型的cx_Oracle.OBJECT

我的机器人框架测试用例如下:

从 CB_ADDRESS_XML 查询

Connect To Database Using Custom Params    cx_Oracle    '${Username}/${Password}@${Host}:${Port}/${DatabaseName}'

${result}=    Query    select address_x from cb_address_xml where ACCOUNT_LINK_CODE_N='21818'

Log    ${result[0][0]}

Disconnect From Database

输出如下:

INFO : ${result} = [(<cx_Oracle.OBJECT object at 0x032AE700>,), (<cx_Oracle.OBJECT object at 0x032AE720>,), (<cx_Oracle.OBJECT object at 0x032AE740>,)]

INFO : <cx_Oracle.OBJECT object at 0x032AE700>

&lt;cx_Oracle.OBJECT object at 0x032AE700&gt; 是一个 xml 对象,我想读取它并验证 xml 中的值。

谢谢 萨拉达

【问题讨论】:

  • “Log ”是什么样子的?
  • cx_oracle 的输出为 ${result} = [(&lt;cx_Oracle.OBJECT object at 0x0307CF80&gt;,), (&lt;cx_Oracle.OBJECT object at 0x0307CFA0&gt;,), (&lt;cx_Oracle.OBJECT object at 0x0307CFC0&gt;,)]
  • 你读过stackoverflow.com/questions/20904684/… 吗?据此,问题在于安装没有 libxml 的 Cx_Oracle 。问题在于 Oracle 发送记录的方式,所以我想在机器人框架端无事可做。
  • 根据我们需要安装think Oracle客户端和那个问题,我们需要编写python代码,我想知道通过机器人框架有什么方法,而不需要编写自定义python库代码。要安装厚 oracle 客户端,我不确定我公司的 IT 支持团队会说什么,厚 oracle 客户端不可能是解决方案,因为谁想要使用这个测试用例,需要先安装厚 oracle 客户端

标签: robotframework


【解决方案1】:

这可以实现为 python 关键字并在 Robot 框架中使用。

当您在 python 调用中执行执行查询时,如下所示:

cursor.execute("select XMLType.GetClobVal(address_x) from cb_address_xml where ACCOUNT_LINK_CODE_N='21818'")

一旦您收到结果,它将是 cx_Oracle.LOB 类型,因此您可以使用以下内容来读取其内容:

result[column_number].read()

这将返回您正在寻找的 XML 数据。

注意:这应该在关闭数据库连接之前完成。

祝你好运!

【讨论】:

    猜你喜欢
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 2018-01-04
    • 1970-01-01
    • 2018-04-25
    • 2022-11-01
    相关资源
    最近更新 更多