连接到robot框架中的sql server | maven依赖项

bogh5gae  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(344)

我正在尝试在robot framework中连接到sql server,因此在pom.xml文件中添加了以下代码:

<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>8.4.1.jre14</version>
</dependency>

我有以下机器人文件:


***Settings***

    Documentation  Testing connection to the database!
    Library     SeleniumLibrary
    Library     DatabaseLibrary
    Library     OperatingSystem  
    #I'm not sure if we need OperatingSystem Library!!

    Suite Setup        Connect To Database      pymssql      ${DBName}    ${DBUser}     ${DBPass}    ${DBHost} 

   # Suite Setup        Connect To Database Using Custom Params   pymssql            ${DBName}    ${DBUser}     ${DBPass}    ${DBHost} 

  ***Variables***
    ${DBName}         DatabaseName
    ${DBUser}         Username
    ${DBPass}         Password
    ${DBHost}         xx.xx.xx.xx

  ***Test Cases***
    Testing Connect to SQL Server
        ${queryTest}=    Execute SQL String     select * from Users where Id=1
        log to console   ${queryTest}

我得到以下错误:
nosectionerror:没有节:“default”
我花了好几天的时间试图连接到数据库,但是运气不好!

jpfvwuh4

jpfvwuh41#

你可能失踪了 ./resources/db.cfg 正式文件中解释的文件 Connect To Database 关键字。
或者,您可以指定一个dbconfigfile,其中它将加载dbapimodulename、dbname dbusername和dbpassword的默认属性值(注意:直接指定dbapimodulename、dbname dbusername或dbpassword将覆盖dbconfigfile中相同键的属性)。如果未指定dbconfigfile,则默认为./resources/db.cfg。
你没有指定任何其他的,所以在我提到的位置它应该是默认的。
类似的问题已经在这里得到了回答:错误:没有节:“默认”在机器人框架使用数据库库
编辑:
因为它仍然不起作用(参见注解),所以我添加了这一部分。 Connect To Database 代码中显示如下:https://github.com/franz-see/robotframework-database-library/blob/master/src/databaselibrary/connection_manager.py#l37,函数的开头如下所示(省略注解):

def connect_to_database(self, dbapiModuleName=None, dbName=None, dbUsername=None, dbPassword=None, dbHost=None, dbPort=None, dbCharset=None, dbConfigFile="./resources/db.cfg"):       
        config = ConfigParser.ConfigParser()
        config.read([dbConfigFile])

        dbapiModuleName = dbapiModuleName or config.get('default', 'dbapiModuleName')
        dbName = dbName or config.get('default', 'dbName')
        dbUsername = dbUsername or config.get('default', 'dbUsername')
        dbPassword = dbPassword if dbPassword is not None else config.get('default', 'dbPassword')
        dbHost = dbHost or config.get('default', 'dbHost') or 'localhost'
        dbPort = int(dbPort or config.get('default', 'dbPort'))

出现以下错误:
nosectionerror:没有节:“default”
发生在第81行:https://github.com/franz-see/robotframework-database-library/blob/master/src/databaselibrary/connection_manager.py#l81
那是因为 dbapiModuleName 为none(默认情况下,您不为其指定任何其他值),因此代码转到 or config.get('default', 'dbapiModuleName') 在同一条线上。那就是你错过的地方 ./resources/db.cfg 试图从中获取此变量值的文件。
所以你要么提供所有的值,要么把文件放在那里。
文档中提到的关键字都是:https://franz-see.github.io/robotframework-database-library/api/1.2.2/databaselibrary.html#connect%第一句话是:
加载给定dbapimodulename的dbapi2.0模块,然后使用它使用dbname、dbusername和dbpassword连接到数据库。
关于提供什么价值的附加信息 dbapiModuleName 可以在这里找到:如何在临时SQLServer上使用robot框架的数据库库,但它不能像现在配置的那样没有。

8dtrkrch

8dtrkrch2#

我对我的代码做了一个简单的修改,它成功了!!

Suite Setup    Connect To Database Using Custom Params    pymssql    '${DBHost}','${DBUser}','${DBPass}','${DBName}'

请注意它应该是:“主机”>“用户名”>“密码”>“数据库名”
参数安排很重要!
注意:我不需要使用配置文件!

相关问题