* Refactor testcaseModel::appendData, and modify its unit test.
This commit is contained in:
+32
-40
@@ -2247,56 +2247,49 @@ class testcaseModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* 追加 bug 和用例执行结果信息
|
||||
* Append bugs and results.
|
||||
*
|
||||
* @param int $cases
|
||||
* @param array $cases
|
||||
* @param string $type
|
||||
* @param array $caseIdlist
|
||||
* @param array $caseIdList
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function appendData($cases, $type = 'case', $caseIdlist = array())
|
||||
public function appendData(array $cases, string $type = 'case', array $caseIdList = array()): array
|
||||
{
|
||||
if(empty($caseIdlist)) $caseIdList = array_keys($cases);
|
||||
if($type == 'case')
|
||||
{
|
||||
$caseBugs = $this->dao->select('count(*) as count, `case`')->from(TABLE_BUG)->where('`case`')->in($caseIdList)->andWhere('deleted')->eq(0)->groupBy('`case`')->fetchPairs('case', 'count');
|
||||
$results = $this->dao->select('count(*) as count, `case`')->from(TABLE_TESTRESULT)->where('`case`')->in($caseIdList)->groupBy('`case`')->fetchPairs('case', 'count');
|
||||
if(empty($caseIdList)) $caseIdList = array_keys($cases);
|
||||
|
||||
$caseFails = $this->dao->select('count(*) as count, `case`')->from(TABLE_TESTRESULT)
|
||||
->where('caseResult')->eq('fail')
|
||||
->andwhere('`case`')->in($caseIdList)
|
||||
->groupBy('`case`')
|
||||
->fetchPairs('case','count');
|
||||
/* 查询用例的 bugs 和结果。 */
|
||||
/* Get bugs and results. */
|
||||
$queryField = $type == 'case' ? '`case`' : '`result`';
|
||||
$caseBugs = $this->dao->select('count(*) as count, `case`')->from(TABLE_BUG)->where($queryField)->in($caseIdList)->andWhere('deleted')->eq(0)->groupBy('`case`')->fetchPairs('case', 'count');
|
||||
$results = $this->dao->select('count(*) as count, `case`')->from(TABLE_TESTRESULT)->where('`case`')->in($caseIdList)->groupBy('`case`')->fetchPairs('case', 'count');
|
||||
|
||||
$steps = $this->dao->select('count(distinct t1.id) as count, t1.`case`')->from(TABLE_CASESTEP)->alias('t1')
|
||||
->leftJoin(TABLE_CASE)->alias('t2')->on('t1.`case`=t2.`id`')
|
||||
->where('t1.`case`')->in($caseIdList)
|
||||
->andWhere('t1.type')->ne('group')
|
||||
->andWhere('t1.version=t2.version')
|
||||
->groupBy('t1.`case`')
|
||||
->fetchPairs('case', 'count');
|
||||
}
|
||||
else
|
||||
{
|
||||
$caseBugs = $this->dao->select('count(*) as count, `case`')->from(TABLE_BUG)->where('`result`')->in($caseIdList)->andWhere('deleted')->eq(0)->groupBy('`case`')->fetchPairs('case', 'count');
|
||||
$results = $this->dao->select('count(*) as count, `case`')->from(TABLE_TESTRESULT)->where('`run`')->in($caseIdList)->groupBy('`case`')->fetchPairs('case', 'count');
|
||||
/* 查询用例的失败结果。 */
|
||||
/* Get result fails of the the testcases. */
|
||||
if($type != 'case') $queryField = '`run`';
|
||||
$caseFails = $this->dao->select('count(*) as count, `case`')->from(TABLE_TESTRESULT)
|
||||
->where('caseResult')->eq('fail')
|
||||
->andWhere($queryField)->in($caseIdList)
|
||||
->groupBy('`case`')
|
||||
->fetchPairs('case','count');
|
||||
|
||||
$caseFails = $this->dao->select('count(*) as count, `case`')->from(TABLE_TESTRESULT)
|
||||
->where('caseResult')->eq('fail')
|
||||
->andwhere('`run`')->in($caseIdList)
|
||||
->groupBy('`case`')
|
||||
->fetchPairs('case','count');
|
||||
|
||||
$steps = $this->dao->select('count(distinct t1.id) as count, t1.`case`')->from(TABLE_CASESTEP)->alias('t1')
|
||||
->leftJoin(TABLE_TESTRUN)->alias('t2')->on('t1.`case`=t2.`case`')
|
||||
->where('t2.`id`')->in($caseIdList)
|
||||
->andWhere('t1.type')->ne('group')
|
||||
->andWhere('t1.version=t2.version')
|
||||
->groupBy('t1.`case`')
|
||||
->fetchPairs('case', 'count');
|
||||
}
|
||||
/* 查询用例的步骤。 */
|
||||
/* Get the the testcase steps. */
|
||||
$queryTable = $type == 'case' ? TABLE_CASE : TABLE_TESTRUN;
|
||||
$queryOn = $type == 'case' ? 't1.`case`=t2.`id`' : 't1.`case`=t2.`case`';
|
||||
$queryField = $type == 'case' ? 't1.`case`' : 't2.`id`';
|
||||
$steps = $this->dao->select('count(distinct t1.id) as count, t1.`case`')->from(TABLE_CASESTEP)->alias('t1')
|
||||
->leftJoin($queryTable)->alias('t2')->on($queryOn)
|
||||
->where($queryField)->in($caseIdList)
|
||||
->andWhere('t1.type')->ne('group')
|
||||
->andWhere('t1.version=t2.version')
|
||||
->groupBy('t1.`case`')
|
||||
->fetchPairs('case', 'count');
|
||||
|
||||
/* 设置测试用例的 bugs 执行结果和步骤。 */
|
||||
/* Set related bugs, results and steps of the testcases. */
|
||||
foreach($cases as $key => $case)
|
||||
{
|
||||
$caseID = $type == 'case' ? $case->id : $case->case;
|
||||
@@ -2305,7 +2298,6 @@ class testcaseModel extends model
|
||||
$case->caseFails = isset($caseFails[$caseID]) ? $caseFails[$caseID] : 0;
|
||||
$case->stepNumber = isset($steps[$caseID]) ? $steps[$caseID] : 0;
|
||||
}
|
||||
|
||||
return $cases;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,13 @@
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/testcase.class.php';
|
||||
|
||||
zdTable('case')->gen('100');
|
||||
zdTable('casestep')->gen('100');
|
||||
zdTable('bug')->config('casebug')->gen('50');
|
||||
zdTable('testresult')->gen('50');
|
||||
zdTable('user')->gen('1');
|
||||
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
@@ -10,11 +17,6 @@ title=测试 testcaseModel->appendData();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取case 1 2 可以加入的数据 >> 0,1,0,1;2,1,1,1
|
||||
获取case 1 2 可以加入的数据 >> 0,1,0,1;0,1,1,1
|
||||
获取case 1 2 可以加入的数据 >> 0,1,0,1;2,1,1,1
|
||||
获取case 1 2 可以加入的数据 >> 0,1,0,1;0,1,1,1
|
||||
获取case 1 2 可以加入的数据 >> 0,1,0,1;2,1,1,1
|
||||
|
||||
*/
|
||||
$case1 = new stdclass();
|
||||
@@ -58,13 +60,31 @@ $case10->id = 10;
|
||||
$case10->case = 10;
|
||||
|
||||
$cases = array(array(1 => $case1, 2 => $case2), array(3 => $case3, 4 => $case4), array(5 => $case5, 6 => $case6), array(7 => $case7, 8 => $case8), array(9 => $case9, 10 => $case10));
|
||||
|
||||
$type = 'run';
|
||||
$type = array('case', 'run');
|
||||
$caseIdList = array(1, 3, 5, 7);
|
||||
|
||||
$testcase = new testcaseTest();
|
||||
|
||||
r($testcase->appendDataTest($cases[0])) && p('1:bugs,results,caseFails,stepNumber;2:bugs,results,caseFails,stepNumber') && e('0,1,0,1;2,1,1,1'); // 获取case 1 2 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[1])) && p('3:bugs,results,caseFails,stepNumber;4:bugs,results,caseFails,stepNumber') && e('0,1,0,1;0,1,1,1'); // 获取case 1 2 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[2])) && p('5:bugs,results,caseFails,stepNumber;6:bugs,results,caseFails,stepNumber') && e('0,1,0,1;2,1,1,1'); // 获取case 1 2 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[3])) && p('7:bugs,results,caseFails,stepNumber;8:bugs,results,caseFails,stepNumber') && e('0,1,0,1;0,1,1,1'); // 获取case 1 2 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[4])) && p('9:bugs,results,caseFails,stepNumber;10:bugs,results,caseFails,stepNumber') && e('0,1,0,1;2,1,1,1'); // 获取case 1 2 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[0], $type[0])) && p('1:bugs,results,caseFails,stepNumber;2:bugs,results,caseFails,stepNumber') && e('6,1,0,1;6,1,1,1'); // 获取case 1 2 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[1], $type[0])) && p('3:bugs,results,caseFails,stepNumber;4:bugs,results,caseFails,stepNumber') && e('6,1,0,1;0,1,1,1'); // 获取case 3 4 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[2], $type[0])) && p('5:bugs,results,caseFails,stepNumber;6:bugs,results,caseFails,stepNumber') && e('0,1,0,1;6,1,1,1'); // 获取case 5 6 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[3], $type[0])) && p('7:bugs,results,caseFails,stepNumber;8:bugs,results,caseFails,stepNumber') && e('6,1,0,1;5,1,1,1'); // 获取case 7 8 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[4], $type[0])) && p('9:bugs,results,caseFails,stepNumber;10:bugs,results,caseFails,stepNumber') && e('5,1,0,1;0,1,1,1'); // 获取case 9 10 可以加入的数据
|
||||
|
||||
r($testcase->appendDataTest($cases[0], $type[1])) && p('1:bugs,results,caseFails,stepNumber;2:bugs,results,caseFails,stepNumber') && e('0,1,0,1;0,1,1,1'); // 获取run 1 2 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[1], $type[1])) && p('3:bugs,results,caseFails,stepNumber;4:bugs,results,caseFails,stepNumber') && e('2,1,0,1;0,1,1,1'); // 获取run 3 4 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[2], $type[1])) && p('5:bugs,results,caseFails,stepNumber;6:bugs,results,caseFails,stepNumber') && e('0,1,0,1;1,1,1,1'); // 获取run 5 6 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[3], $type[1])) && p('7:bugs,results,caseFails,stepNumber;8:bugs,results,caseFails,stepNumber') && e('2,1,0,1;1,1,1,1'); // 获取run 7 8 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[4], $type[1])) && p('9:bugs,results,caseFails,stepNumber;10:bugs,results,caseFails,stepNumber') && e('0,1,0,1;0,1,1,1'); // 获取run 9 10 可以加入的数据
|
||||
|
||||
r($testcase->appendDataTest($cases[0], $type[0], $caseIdList)) && p('1:bugs,results,caseFails,stepNumber;2:bugs,results,caseFails,stepNumber') && e('6,1,0,1;0,0,0,0'); // 获取case 1 2 case id 1 3 5 7 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[1], $type[0], $caseIdList)) && p('3:bugs,results,caseFails,stepNumber;4:bugs,results,caseFails,stepNumber') && e('6,1,0,1;0,0,0,0'); // 获取case 3 4 case id 1 3 5 7 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[2], $type[0], $caseIdList)) && p('5:bugs,results,caseFails,stepNumber;6:bugs,results,caseFails,stepNumber') && e('0,1,0,1;0,0,0,0'); // 获取case 5 6 case id 1 3 5 7 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[3], $type[0], $caseIdList)) && p('7:bugs,results,caseFails,stepNumber;8:bugs,results,caseFails,stepNumber') && e('6,1,0,1;0,0,0,0'); // 获取case 7 8 case id 1 3 5 7 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[4], $type[0], $caseIdList)) && p('9:bugs,results,caseFails,stepNumber;10:bugs,results,caseFails,stepNumber') && e('0,0,0,0;0,0,0,0'); // 获取case 9 10 case id 1 3 5 7 可以加入的数据
|
||||
|
||||
r($testcase->appendDataTest($cases[0], $type[1], $caseIdList)) && p('1:bugs,results,caseFails,stepNumber;2:bugs,results,caseFails,stepNumber') && e('3,1,0,1;3,0,0,0'); // 获取run 1 2 run id 1 3 5 7 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[1], $type[1], $caseIdList)) && p('3:bugs,results,caseFails,stepNumber;4:bugs,results,caseFails,stepNumber') && e('3,1,0,1;0,0,0,0'); // 获取run 3 4 run id 1 3 5 7 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[2], $type[1], $caseIdList)) && p('5:bugs,results,caseFails,stepNumber;6:bugs,results,caseFails,stepNumber') && e('0,1,0,1;3,0,0,0'); // 获取run 5 6 run id 1 3 5 7 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[3], $type[1], $caseIdList)) && p('7:bugs,results,caseFails,stepNumber;8:bugs,results,caseFails,stepNumber') && e('3,1,0,1;3,0,0,0'); // 获取run 7 8 run id 1 3 5 7 可以加入的数据
|
||||
r($testcase->appendDataTest($cases[4], $type[1], $caseIdList)) && p('9:bugs,results,caseFails,stepNumber;10:bugs,results,caseFails,stepNumber') && e('3,0,0,0;0,0,0,0'); // 获取run 9 10 run id 1 3 5 7 可以加入的数据
|
||||
|
||||
@@ -90,14 +90,15 @@ class testcaseTest
|
||||
}
|
||||
|
||||
/**
|
||||
* Test get cases of a module.
|
||||
* 测试获取模块的用例。
|
||||
* Test get cases of modules.
|
||||
*
|
||||
* @param int $productID
|
||||
* @param int $branch
|
||||
* @param int $moduleIdList
|
||||
* @param string $browseType
|
||||
* @param string $auto
|
||||
* @param string $caseType
|
||||
* @param int $productID
|
||||
* @param int|string $branch
|
||||
* @param int|array $moduleIdList
|
||||
* @param string $browseType
|
||||
* @param string $auto no|unit
|
||||
* @param string $caseType
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
@@ -677,16 +678,18 @@ class testcaseTest
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试追加 bug 和执行结果信息。
|
||||
* Test append bugs and results.
|
||||
*
|
||||
* @param array $cases
|
||||
* @param string $type
|
||||
* @param array $caseIdList
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function appendDataTest($cases, $type = 'case')
|
||||
public function appendDataTest(array $cases, string $type = 'case', array $caseIdList = array()): array
|
||||
{
|
||||
$objects = $this->objectModel->appendData($cases, $type = 'case');
|
||||
$objects = $this->objectModel->appendData($cases, $type, $caseIdList);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
title: table zt_bug
|
||||
desc: "bug"
|
||||
author: Mengyi Liu
|
||||
version: "1.0"
|
||||
fields:
|
||||
- field: case
|
||||
range: 1-3,6-9
|
||||
- field: result
|
||||
range: 3-5,7-9
|
||||
Reference in New Issue
Block a user