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解析的主要内容,如果未能解决你的问题,请参考以下文章

robot frame 注释 怎么加

R循环使用列表中的data.frame的函数

如何更优雅地操作不同列表中的 data.frame 对象?

使用 ls() 或 objects() 获取类 data.frame 的对象

无法将notepad++添加到打开方式列表中的解决办法

notepad++插件大全合集整理