代码之家  ›  专栏  ›  技术社区  ›  Dinesh

了解Robot日志(Log.html)文件构造

  •  2
  • Dinesh  · 技术社区  · 6 年前

    log.html 在测试套件完成时生成。

    我已经研究了 日志.html 并发现以下行负责添加测试执行日志

    addTestExecutionLog(topsuite);
    

    function addTestExecutionLog(main) {
        $('body').append($('<h2>Test Execution Log</h2>'),
                         $.tmpl('suiteTemplate', main));
    }
    

    这个 日志.html 具有的jquery模板 suiteTemplate testTemplate 分别负责套件和测试用例的添加。

    尽管 模板是在源代码中定义的,我找不到它们被调用的位置。因为 $.tmpl('suiteTemplate', main) ,正在呼叫 套件模板

    其中 用于测试用例?

    log.html中的测试模板代码:

    <script type="text/x-jquery-tmpl" id="testTemplate">
    
    
      <div id="${id}" class="test">
        <div class="element-header closed" onclick="toggleTest('${id}')">
          <div class="element-header-left" title="{{html fullName}}">
            <span class="elapsed" title="Elapsed time">${times.elapsedTime}</span>
            <span class="label ${status.toLowerCase()}">TEST</span>
            <span class="name">{{html name}}</span>
            {{if !isCritical}}(non-critical){{/if}}
          </div>
          <div class="element-header-right" onclick="stopPropagation(event)" title="">
            <a class="expand" title="Expand all" href="javascript:expandAll('${id}')"></a>
            <a class="collapse" title="Collapse all" href="javascript:collapseAll('${id}')"></a>
            <a class="link" title="Link to this test" href="#${id}" onclick="makeElementVisible('${id}')"></a>
          </div>
          <div class="element-header-toggle" title="Toggle visibility"></div>
        </div>
        <div class="children">
          <table class="metadata">
            <tr>
              <th>Full Name:</th>
              <td>{{html fullName}}</td>
            </tr>
            {{if doc()}}
            <tr>
              <th>Documentation:</th>
              <td class="doc">{{html doc()}}</td>
            </tr>
            {{/if}}
            {{if tags.length}}
            <tr>
              <th>Tags:</th>
              <td>{{html tags.join(', ')}}</td>
            </tr>
            {{/if}}
            {{if timeout}}
            <tr>
              <th>Timeout:</th>
              <td>{{html timeout}}</td>
            </tr>
            {{/if}}
            <tr>
              <th>Start / End / Elapsed:</th>
              <td>${times.startTime} / ${times.endTime} / ${times.elapsedTime}</td>
            </tr>
            <tr>
              <th>Status:</th>
              <td><span class="label ${status.toLowerCase()}">${status}</span> ({{if isCritical}}critical{{else}}non-critical{{/if}})</td>
            </tr>
            {{if message()}}
            <tr>
              <th>suri Message:</th>
              <td class="message">{{html message()}}</td>
            </tr>
            {{/if}}
          </table>
        </div>
      </div>
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Dinesh    6 年前

    经过调试,我发现下面的函数也有同样的作用。

    function drawCallback(element, childElement, childrenNames) {
        return function () {
            util.map(childrenNames, function (childName) {                
                var children = element[childName + 's']();
                var template = childName + 'Template';
                util.map(children, function (child) {
                    $.tmpl(template, child).appendTo(childElement);
                });
            });
        }
    }
    

    痕迹是这样的

    at drawCallback (log.html:571)
    at populateChildren (log.html:565)
    at expandElement (log.html:594)
    at expandRecursively (log.html:622)