Robot Framework и Excel: построение полного пути к Excel-файлу из разных частей пути (Open Pyxl Library) - PullRequest
1 голос
/ 12 февраля 2020

Я пытаюсь протестировать короткий Robot Framework-код для запроса у пользователя имени Excel-файла в виде всплывающего окна, предоставляемого библиотекой Dialogs Robot Framework. Идея состоит в том, что база пути к файлу (которая остается той же самой к папке, в которой будут находиться Excel-файлы) жестко запрограммирована в одну переменную с именем ${EXCEL BASE PATH}, тогда пользователь будет давать имя Excel-файла во всплывающем окне. -window (так как имя файла будет меняться в разных файлах) и эта изменяющаяся часть пути будет сохранена в ${EXCEL NAME}, а третья часть будет жестко задана как расширение файла .xlsx, сохраненное в ${EXCEL FILE EXTENSION}, потому что только файлы с Расширение .xlsx будет открыто, и нет никаких изменений в расширении файла.

Библиотека, используемая для обработки Excel - OpenPyxlLibrary, поскольку она поддерживает xlsx. ExcelLibrary поддерживает только xls.

Я близко подошел к работе, но проблема в том, что при объединении полного пути этих трех частей, написанных выше, результат не совпадает с результатом, который я ищу.

Ожидаемый результат для полного пути к открываемому Excel-файлу будет:

C:\\Users\\developer\\Robot Framework\\Excel\\TestExcel.xlsx

Но вместо этого теперь при входе в консоль это:

C:\Users\developer\Robot Framework\Excel\ TestExcel .xlsx

Таким образом, отсутствуют пропущенные вторые обратные слеши (требующиеся Open Pyxl Library для пути), а также свободное место перед .xlsx

Есть ли другой способ построения пути, используемый Open Pyxl Library из разных частей, как это, чем с помощью Catenate-ключевое слово, как проверено здесь? Если полный путь к Excel жестко запрограммирован в одну переменную, которая уже отлично работает, но проблема в дальнейшем будет заключаться в необходимости изменить значение этой переменной при изменении файла Excel, поэтому я пытаюсь протестировать решение для пользователя, чтобы дать имя Excel-файла, который будет открыт. Поскольку имя файла является изменяющейся частью от файла к файлу, а другие части остаются неизменными.

Excel-файл еще не открыт в этом упрощенном коде, и я сначала пытаюсь просто записать полный путь к Excel-файлу, чтобы проверить, правильно ли он записывается. Когда путь будет правильным, я мог бы добавить код для фактического открытия файла Excel.

CommonResources.robot-файл (файл-ресурс):

*** Settings ***
Library           String
Library           BuiltIn
Library           OpenPyxlLibrary
Library           Dialogs

*** Variables ***
${EXCEL BASE PATH}    C:\\Users\\developer\\Robot Framework\\Excel\\
${EXCEL FILE EXTENSION}    .xlsx
${EXCEL NAME}     ${EMPTY}
${EXCEL SHEET}    Sheet

Предоставить файл имени Excel ( файл теста):

Resource          Resources/CommonResources.robot

*** Test Cases ***
Provide Excel Name
    ${EXCEL NAME}    Get Value From User    Please provide name of Excel-file
    Log to console    ${EXCEL NAME}
    ${FULL EXCEL PATH}    Catenate    ${EXCEL BASE PATH}    ${EXCEL NAME}    ${EXCEL FILE EXTENSION}
    Log to console    ${FULL EXCEL PATH}

1 Ответ

3 голосов
/ 12 февраля 2020

То, что вы видите в консоли для обратной косой черты, на самом деле не является проблемой вообще. Символ backsla sh является «специальным» в том смысле, что он используется для добавления управляющих символов в строки (например, \n для новой строки), а когда он должен использоваться в качестве литерального символа \, ему необходимо чтобы быть экранированным - сам по себе:).
Таким образом, ваша запись в качестве значения переменной C:\\Users\\developer, когда вы хотите, чтобы конечный результат был C:\Users\developer.

Дополнительный пробел - то есть из-за значения по умолчанию Поведение Catenate - по умолчанию он объединяет аргументы с этим символом. Это можно изменить с помощью аргумента SEPARATOR:

${FULL EXCEL PATH}=   Catenate    SEPARATOR=${EMPTY}    ${EXCEL BASE PATH}    ${EXCEL NAME}    ${EXCEL FILE EXTENSION}

${EMPTY} - это специальная переменная, равная "" - пустой строке.

Кстати, есть и другая Чтобы получить конечную строку, просто используйте Set Variable, передав 3 другие переменные - каркас заменит их фактическими значениями:

${FULL EXCEL PATH}=   Set Variable   ${EXCEL BASE PATH}${EXCEL NAME}${EXCEL FILE EXTENSION}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...