Ejemplo n.º 1
0
/**
 * 使用注意事项:一般情况下不会所产生的测试结果表格内容不会有问题,
 * 问题的引入是没有对每次添加的数据做浏览器判断,在正常情况下浏览器的顺序恒定不变的
 * 当不同浏览器运行的测试内容不同的情况下,如ie8下采用filter=baidu.fx,
 * 而chrome下采用filter=baidu.fx.collaplse
 * 在添加浏览器的时候按照顺序会先添加chrome,再添加ie8
 * 那么当chrome下用例只有baidu.fx.collapse的时候,
 * 由于他会默认先找到的浏览器为chrome,那么与它相邻的ie8的baidu.fx.current的内容会左移到chrome下。
 * 这个跟存储数据的格式有关系:caseList
 * 							/         \
 *               baidu.fx.collapse    baidu.fx.current
 *              /           \             /            \
 *          chrome          ie8         null           ie8
 *         /  |  \         / |  \    (supposed       /   |  \
 *    fail  total hostInfo          to be chrome)  fail total hostInfo
 *
 *
 *
 * 不直接使用<style type ="text/css">来设置css是因为有的邮件客户端会过滤这样的信息
 *
 * ***/
function geneHTML($caseList, $name = '')
{
    date_default_timezone_set('PRC');
    $url = (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '') . $_SERVER['PHP_SELF'];
    $html = "<!DOCTYPE><html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' />\n<style>td, th {border: 1px solid white;}</style></head><body><div>\n<h2 align='center'>自动化用例测试结果" . date('Y-m-d H:i:s') . "</h2>\n<a href='http://{$url}/../../../../report/base/{$name}' style='font:normal bolder 12pt Arial' title='效果应该比邮件好'>网页版</a>\n<table cellspacing='0' style='border: 1px solid black; color: #fff; background-color: #0d3349; text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; text-align: center;'>\n<thead><tr><th rowspan='2'>用例名称</th><th rowspan='2'>总覆盖率</th>" . getThBrowser($caseList) . "</tr></thead>" . getTrCase($caseList) . "</table></div>" . _srcOnlyList() . "</body></html>";
    return $html;
}
Ejemplo n.º 2
0
/**
 * 使用注意事项:一般情况下不会所产生的测试结果表格内容不会有问题,
 * 问题的引入是没有对每次添加的数据做浏览器判断,在正常情况下浏览器的顺序恒定不变的
 * 当不同浏览器运行的测试内容不同的情况下,如ie8下采用filter=baidu.fx,
 * 而chrome下采用filter=baidu.fx.collaplse
 * 在添加浏览器的时候按照顺序会先添加chrome,再添加ie8
 * 那么当chrome下用例只有baidu.fx.collapse的时候,
 * 由于他会默认先找到的浏览器为chrome,那么与它相邻的ie8的baidu.fx.current的内容会左移到chrome下。
 * 这个跟存储数据的格式有关系:caseList
 * 							/         \
 *               baidu.fx.collapse    baidu.fx.current
 *              /           \             /            \
 *          chrome          ie8         null           ie8
 *         /  |  \         / |  \    (supposed       /   |  \
 *    fail  total hostInfo          to be chrome)  fail total hostInfo
 *
 *
 *
 * 不直接使用<style type ="text/css">来设置css是因为有的邮件客户端会过滤这样的信息
 *
 * ***/
function geneHTML($caseList, $name = '')
{
    date_default_timezone_set('PRC');
    $url = (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '') . $_SERVER['PHP_SELF'];
    $html = "<!DOCTYPE><html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' />\n<style>td, th {border: 1px solid black;}</style></head><body><div>\n<h2 align='center'>自动化用例测试结果" . date('Y-m-d H:i:s') . "</h2>\n<table align='center' cellspacing='0' style='font:normal bolder 12pt Arial;border: 1px solid black; color: #000000; background-color: #fff; text-align: center;'>\n<tr><th colspan='17'>全部用例统计</th></tr><tr><th rowspan='2'>用例名称</th><th rowspan='2'>总覆盖率</th>" . getThBrowser($caseList) . "</tr>" . getTrCase($caseList, false) . "</table></div></body></html>";
    //  ."</table></div>"._srcOnlyList()."</body></html>"
    return $html;
}
Ejemplo n.º 3
0
/**
 *
 * 根据执行结果生成单元格信息
 * @param unknown_type $caseList
 */
function getTrCase($caseList, $onlyFail, $onlyCoverd)
{
    //$onlyFail 为真时,只显示 fail 的用例
    //$onlyCoverd 为0时,只显示全浏览器覆盖率为0的用例;为1时,只显示全浏览器覆盖率不为0的用例;为其他时,显示所有的用例
    //创建case名对应的单元格
    $totalTrCase = '';
    require_once 'config.php';
    $rowColor = '#B0E0E6';
    //标记行的颜色,单双数行显示的背景颜色不同
    $numBro = count(Config::getBrowserSet($configBrowserSet));
    $averageCov = 0;
    //所有用例的全浏览器覆盖率的平均值(全浏览器覆盖率为0的不计)
    $numCov = 0;
    //全浏览器覆盖率不为0的用例数量
    foreach ($caseList as $casename => $caseDetail) {
        //每一个用例
        $ifFail = false;
        $cnurl = implode('.', explode('_', $casename));
        $trCase = '';
        $totalCov = calTotalCov($caseDetail, $numBro);
        $averageCov += $totalCov;
        $numCov = $totalCov == 0 ? $numCov : $numCov + 1;
        if ($onlyCoverd == 0 && $totalCov != 0 || $onlyCoverd == 1 && $totalCov == 0) {
            //$onlyCoverd 为0时,只显示全浏览器覆盖率为0的用例;为1时,只显示全浏览器覆盖率不为0的用例;
            continue;
        }
        if (!$onlyFail) {
            //对于展示 fail 的用例的列表,不显示全浏览器覆盖率
            $trCase .= "<td title='全浏览器覆盖率'>" . $totalCov . ($totalCov == "_" ? "" : "%") . "</td>";
        }
        foreach ($caseDetail as $br => $infos) {
            //$b为browser名字,$info为详细信息
            $fail = $infos['fail'];
            $ifFail = $fail == 0 ? $ifFail : true;
            $total = $infos['total'];
            $cov = $infos['cov'];
            $color = $fail == 0 ? $rowColor : '#CD5C5C';
            $PercentSign = $cov == '_' ? '' : '%';
            $trCase .= "<td style='background-color:" . $color . "'>" . $cov . $PercentSign . "</td><td style='background-color:" . $color . "'>" . $fail . "</td><td style='background-color:" . $color . "'>" . $total . "</td>";
        }
        $trCase = "<tr style='background-color:{$rowColor}'><td><a href='http://../run.php?case={$cnurl}'>运行</a>{$casename}</td>" . $trCase . "</tr>";
        if (!$onlyFail || $ifFail) {
            $totalTrCase = $totalTrCase . $trCase;
            $rowColor = $rowColor == '#F0FFFF' ? '#B0E0E6' : '#F0FFFF';
        } else {
        }
    }
    $averageCov = number_format($averageCov / $numCov, 1);
    if ($onlyCoverd == 0) {
        $tableContent = $totalTrCase;
    } elseif (!$onlyFail) {
        $tableContent = "<th rowspan='2'>总覆盖率<br>(平均值:" . $averageCov . "%)</th>" . getThBrowser($caseList) . $totalTrCase;
    } else {
        $tableContent = getThBrowser($caseList) . $totalTrCase;
    }
    return $tableContent;
}