Notepad++函数列表的Robot Framework解析
Posted
技术标签:
【中文标题】Notepad++函数列表的Robot Framework解析【英文标题】:Robot Framework parsing for Notepad++ Function List 【发布时间】:2017-06-18 18:12:27 【问题描述】:我正在尝试使用类结构为 Robot Framework 脚本创建一个 Notepad++ function list,以将 4 个不同的部分封装在一个机器人文件中:
-
设置
变量
测试用例
关键字
使用文档和一些实验,我创建了一个简单的过滤器,它将根据关键字和测试用例从行首开始返回。但是更复杂的类分组我需要一些正则表达式的帮助。似乎 *** 应该有助于清晰的标记。
这是我迄今为止所拥有的:
我已经安装了User Defined Robot Syntax Highlighting 并将以下部分添加到 %app%\notepad++\functionList.xml
<association userDefinedLangName="Robotframework" id="robot_function"/>
然后在解析器部分:
<parser
id="robot_function"
displayName="Robot Section"
commentExpr="((#.*?$)|(^Documentation*\w.*?$)|(^Meta*\w.*?$))|(^Library*\w.*?$)">
<function
mainExpr="^(\w.*?$)"
displayMode="$functionName">
<functionName>
<nameExpr expr="^(\w.*?$)"/>
</functionName>
</function>
</parser>
所以,我遇到问题的部分是:
<classRange mainExpr="^(\*).*(?=\n\S|\Z)">
<className>
<nameExpr expr="^(\w.*?$)"/>
</className>
<function mainExpr="^(\w.*?$)">
<functionName>
<nameExpr expr="^(\w.*?$)"/>
</functionName>
</function>
</classRange>
下面是一个示例机器人文件
*** Variables ***
$variable variable value
*** Settings ***
Documentation multi
... line
... documentation.
Metadata Version 0.1
Library LibraryName some variable
Library String
*** Test Cases ***
Test Case RF 01
Run Keyword $TEST_NAME
Test Case RF 02
Run Keyword $TEST_NAME
*** Keywords ***
Test Case RF $tc
Sleep 30ms
Test Keyword
Sleep 300ms
我确信如果我可以使它适用于其中一个部分,例如测试用例,那么我也可以将它应用到其他部分。我主要对测试用例和关键字感兴趣。
【问题讨论】:
【参考方案1】:通过以下设置,我可以将 Notepad++ 函数列表用于 Robot Framework 关键字和测试用例:
<association id="robot_syntax" userDefinedLangName="Robotframework" />
<association id="robot_syntax" ext=".robot" />
<parser
displayName="Robot Framework"
id ="robot_syntax"
commentExpr="(^(\h*)|(#.*?)|(\[\w.*?)|(Documentation*\w.*?)|(Library*\w.*?)|(Metadata*\w.*?)|(Resource*\w.*?)|(Test (Setup|Teardown|Template|Timeout)*\w.*?)||(Suite (Setup|Teardown)*\w.*?)|((Force|Default) Tags*\w.*?))$"
>
<function mainExpr="(?m-s:(?:^)[A-Za-z0-9].*$)"/>
</parser>
【讨论】:
以上是关于Notepad++函数列表的Robot Framework解析的主要内容,如果未能解决你的问题,请参考以下文章