Установить ссылки при разборе XML-перезагрузки - PullRequest
0 голосов
/ 27 июня 2018

Вот ситуация: у меня есть серверная часть django, которая запускает тесты, создает файлы XML и отправляет их на мой интерфейс django, который делает с ними все, что он хочет (фактически генерирует файлы HTML).

[бэкэнд] -> XML -> [внешний интерфейс] -> HTML

Моя проблема: в файлах XML у меня есть внешние ссылки на мою документацию, которая размещена на моем веб-интерфейсе, а URL-адрес известен только последнему.

Как я могу настроить свой файл .robot для создания элементов, которые будут изменены при перезагрузке во время обработки файла XML, и какие аргументы мне нужно дать для перезагрузки?

EDIT: Как указано в комментариях, вот пример:

Мой файл робота на самом деле содержит такой тест:

Test_1
  [Documentation]Doc: [${PathToRefDoc}#test_1 | test_1_doc]
  <:Do Things:>

Значение $ {PathToRefDoc} заменяется во время генерации файла XML, и оно дает что-то вроде этого:

<test id="1" name="Test_1"
    <doc>Doc: [<:ref doc URL:>#test_1 | test_1_doc]</doc>
    <:Infos on things done:>
</test>

Я хочу, чтобы XML-файл без уже установленного значения <: ref doc URL:>, так как это значение известно не при создании файла, а как «макрос», который следует указывать при обработке файл XML по перезагрузке.

1 Ответ

0 голосов
/ 28 июня 2018

Я наконец-то нашел решение в документации API репозитория роботов:

Выходная документация роботизированной конструкции

Мне нужно было создать класс, унаследовавший класс SuiteVisitor, вот код

from robot.api import SuiteVisitor

class DocURLSetter(SuiteVisitor):
    """
    Changes every instances of ${PathToRefDoc} contained in the tests
    documentation with the URL given at instantiation
    """

    def __init__(self, doc_url):
        self.doc_url = doc_url

    def visit_test(self, test):
        test.doc = test.doc.replace("${PathToRefDoc}", self.doc_url)

И в коде, вызывающем среду перезагрузки, мне пришлось добавить аргумент prerebotmodifier:

robot.rebot(src, log=dst,
            report=None,
            loglevel='TRACE:WARN',
            exclude='TEST_SKIPPED',
            stdout=None,
            stderr=None,
            prerebotmodifier=DocURLSetter(my_doc_url))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...