Ошибка: TypeError: аргумент 1 должен быть объектом строки или юникода - PullRequest
1 голос
/ 24 мая 2019

Каркас: Робот, Язык: 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 Ответ

2 голосов
/ 24 мая 2019

Я не использовал эту платформу, но документы предполагают, что вы, возможно, не используете правильный синтаксис для строки параметра: 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()
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...