连接到Robot框架中的SQL Server | Maven依赖关系



我正在尝试连接到robot框架中的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:无节:"默认">

我花了好几天时间试图连接到数据库,但没有成功!

您可能缺少./resources/db.cfg文件,如Connect To Database关键字的官方文档中所述。

您可以选择指定一个dbConfigFile,它将在其中加载dbapiModuleName、dbName dbUsername和dbPassword的默认属性值(注意:直接指定dbapiModuleMame、dbName dbUsername或dbPassword将覆盖dbConfigFile中同一密钥的属性(。如果未指定dbConfigFile,则默认为/resources/db.cfg.

您没有指定任何其他选项,所以它在我提到的位置中期望默认选项。

SO上也回答了类似的问题:错误:无节:';默认';在Robot框架中使用DatabaseLibrary


编辑:

因为它仍然不起作用(见评论(,我添加了这一部分。

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:无节:"默认">

发生在第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%20To%20Database第一句话是:

加载给定dbapiModuleName的DB API 2.0模块,然后使用它使用dbName、dbUsername和dbPassword连接到数据库。

关于为dbapiModuleName提供什么值的其他信息可以在这里找到:如何在临时sql server上使用带有Robot Framework的数据库库,但它不能像现在的配置一样为None。

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

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

请注意:"主机">quot;用户名">quot;密码">quot;数据库名称";

参数安排很重要!

注意:我不需要使用配置文件!

最新更新