我试图在机器人框架中连接到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:无节:“默认”
我花了几天的时间试图连接到数据库,却没有运气!
发布于 2021-01-03 18:30:43
您可能丢失了./resources/db.cfg文件,如Connect To Database关键字的官方文档中所解释的那样。
还可以选择指定一个dbConfigFile,其中它将加载dbapiModuleName、dbName dbUsername和dbPassword的默认属性值(注意:指定dbapiModuleName、dbName dbUsername或dbPassword将直接覆盖dbConfigFile中相同键的属性)。如果没有指定dbConfigFile,则默认为./resources/db.cfg。
您没有指定任何其他的,因此它期望在我提到的位置中的默认位置。
在SO:Error: No section: 'default' in Robot Framework using 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:无节:“默认”
这是因为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中加载DBAPI2.0模块,然后使用它使用dbName、dbUsername和dbPassword连接到数据库。
有关为dbapiModuleName提供什么值的其他信息可以在这里找到:How to use database library with Robot Framework on temporary sql server,但它不能像现在配置的那样为零。
发布于 2021-01-04 11:02:51
我对我的代码做了一个简单的修改,它成功了!!
Suite Setup Connect To Database Using Custom Params pymssql '${DBHost}','${DBUser}','${DBPass}','${DBName}'请注意:“主机”>“用户名”>“密码”>“数据库名”
参数的安排很重要!
注意:我不需要使用配置文件!
https://stackoverflow.com/questions/65550024
复制相似问题