错误:TypeError:参数1必须是字符串或Unicode对象

时间:2019-05-24 12:37:49

标签: python python-3.x robotframework

框架:机器人, 语言:Python-3.7.1 数据库驱动程序:pyodc 熟练程度:新手

我正在尝试将数据库连接配置从python传递到机器人框架,并获得以下错误消息。

TypeError: argument 1 must be a string or unicode object

我试图在传递给机器人之前将其转换为地图,但没有帮助。此外,在此处编写之前已经经历了类似的错误消息讨论,但都没有这样做。有人可以为这种情况提供最佳解决方案吗?

Python:-

注意:每个Key和value变量都是字符串。

def databaseconfig(self, environment):
    if (environment == "QA"):
        database = {self.Key_Driver: self.Value_Driver,
                    self.Key_Server: self.Value_Server,
                    self.Key_Database: self.Value_Database,
                    self.Key_UID: self.Value_UID,
                    self.Key_PWD: self.Value_PWD,
                    self.Key_PORT: self.Value_Port
                    }
        return str(database)

机器人文件:-

${connection}=  databaseconfig  QA
connect to database using custom params        pyodbc     ${connection}

预期:-

连接必须成功建立。

实际:

错误:TypeError:参数1必须是字符串或Unicode对象

1 个答案:

答案 0 :(得分:2)

我还没有使用这个框架,但是文档建议您可能没有对参数字符串使用正确的语法:https://franz-see.github.io/Robotframework-Database-Library/api/0.5/DatabaseLibrary.html#Connect%20To%20Database%20Using%20Custom%20Params

他们在此处提供的示例语法为database='my_db_test', user='postgres', password='s3cr3t', host='tiger.foobar.com', port=5432,而不是Python字典的字符串表示形式。

如果用此代码替换str(database),您能看到它是否有效吗?

return ", ".join(
    "{}='{}'".format(a, b) for a,b in database.items()
)