我正在尝试连接到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;数据库名称";
参数安排很重要!
注意:我不需要使用配置文件!