在XML Rebot解析期间设置链接

时间:2018-06-27 09:42:56

标签: python robotframework

这是一种情况:我有一个django后端,它运行测试,创建XML文件并将它们发送到我的django前端,后者对它们执行任何操作(实际上会生成HTML文件)。

[后端] -> XML-> [前端] -> HTML

我的问题是:在XML文件中,我有我的文档的外部链接,这些文档由前端托管,并且其URL仅由前端知道。

如何配置我的'.robot'文件以创建要在XML文件处理期间由rebot更改的元素,我需要为rebot提供哪些参数?

编辑: 如评论中所问,这是一个示例:

我的机器人文件实际上包含这样的测试:

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

在生成XML文件的过程中,替换了$ {PathToRefDoc}值,它给出了以下内容:

<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:>值,因为在创建文件期间不知道它的值,而是在处理以下内容时给出的“宏”通过rebot处理XML文件。

1 个答案:

答案 0 :(得分:1)

我终于在robotframework存储库的API文档中找到了一种解决方案:

Robotframework ouput documentation

我需要创建一个继承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)

在代码调用rebot框架中,我必须添加'prerebotmodifier'参数:

robot.rebot(src, log=dst,
            report=None,
            loglevel='TRACE:WARN',
            exclude='TEST_SKIPPED',
            stdout=None,
            stderr=None,
            prerebotmodifier=DocURLSetter(my_doc_url))