Merge branch 'sprint/autoTest_liumengyi_testcase' into 'master'

* Add auto test of testcase and fix bug.

See merge request easycorp/zentaopms!2833
This commit is contained in:
朱金勇
2022-04-08 07:47:07 +00:00
12 changed files with 572 additions and 92 deletions
+10 -6
View File
@@ -1247,9 +1247,9 @@ class testcaseModel extends model
else
{
/* Compare every step. */
foreach($oldStep as $id => $oldStep)
foreach($oldStep as $id => $step)
{
if(trim($oldStep->desc) != trim($steps[$id]->desc) or trim($oldStep->expect) != $steps[$id]->expect)
if(trim($step->desc) != trim($steps[$id]->desc) or trim($step->expect) != $steps[$id]->expect)
{
$stepChanged = true;
break;
@@ -1388,10 +1388,14 @@ class testcaseModel extends model
if($module != 'ditto') $prevModule = $module;
if($module == 'ditto') $data->module[$i] = $prevModule;
}
foreach($data->branch as $i => $branch)
if(isset($data->branch))
{
if($branch != 'ditto') $prevBranch = $branch;
if($branch == 'ditto') $data->branch[$i] = $prevBranch;
foreach($data->branch as $i => $branch)
{
if($branch != 'ditto') $prevBranch = $branch;
if($branch == 'ditto') $data->branch[$i] = $prevBranch;
}
}
$libCases = $this->dao->select('*')->from(TABLE_CASE)->where('deleted')->eq(0)->andWhere('id')->in($data->caseIdList)->fetchAll('id');
@@ -1889,7 +1893,7 @@ class testcaseModel extends model
if($methodName == 'review')
{
$status = zget($case, 'status', $status);
$status = zget($case, 'status', '');
if($this->post->result == 'pass') return 'normal';
+245 -50
View File
@@ -51,15 +51,6 @@ class testcaseTest
return $objects;
}
public function getProjectCasesTest($projectID, $orderBy = 'id_desc', $pager = null, $browseType = '')
{
$objects = $this->objectModel->getProjectCases($projectID, $orderBy = 'id_desc', $pager = null, $browseType = '');
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test get execution cases.
*
@@ -134,9 +125,19 @@ class testcaseTest
return $objects;
}
public function getTestCasesTest($productID, $branch, $browseType, $queryID, $moduleID, $sort, $pager, $auto = 'no')
/**
* Test get test cases.
*
* @param int $productID
* @param string $browseType
* @param int $queryID
* @param string $auto
* @access public
* @return array
*/
public function getTestCasesTest($productID, $browseType, $queryID, $auto = 'no')
{
$objects = $this->objectModel->getTestCases($productID, $branch, $browseType, $queryID, $moduleID, $sort, $pager, $auto = 'no');
$objects = $this->objectModel->getTestCases($productID, 0, $browseType, $queryID, $moduleID, 'id_desc', null, $auto);
if(dao::isError()) return dao::getError();
@@ -182,6 +183,20 @@ class testcaseTest
return $objects;
}
/**
* Test get cases by type.
*
* @param int $productID
* @param int $branch
* @param string $type
* @param string $status
* @param int $moduleID
* @param string $orderBy
* @param object $pager
* @param string $auto
* @access public
* @return int
*/
public function getByStatusTest($productID = 0, $branch = 0, $type = 'all', $status = 'all', $moduleID = 0, $orderBy = 'id_desc', $pager = null, $auto = 'no')
{
$objects = $this->objectModel->getByStatus($productID, $branch, $type, $status, $moduleID, $orderBy, $pager, $auto);
@@ -191,6 +206,13 @@ class testcaseTest
return count($objects);
}
/**
* Test get stories' cases.
*
* @param int $storyID
* @access public
* @return array
*/
public function getStoryCasesTest($storyID)
{
$objects = $this->objectModel->getStoryCases($storyID);
@@ -216,19 +238,64 @@ class testcaseTest
return $counts;
}
public function updateTest($caseID)
/**
* Test update a case.
*
* @param array $param
* @access public
* @return int
*/
public function updateTest($param = array())
{
$objects = $this->objectModel->update($caseID);
$caseId = 1;
$case = $this->objectModel->getById($caseId);
$_POST['title'] = $case->title;
$_POST['color'] = $case->color;
$_POST['precondition'] = $case->precondition;
$_POST['steps'] = array('用例步骤描述1');
$_POST['stepType'] = array('step');
$_POST['expects'] = array('这是用例预期结果1');
$_POST['comment'] = '';
$_POST['labels'] = '';
$_POST['lastEditedDate'] = $case->lastEditedDate;
$_POST['product'] = $case->product;
$_POST['module'] = $case->module;
$_POST['story'] = $case->story;
$_POST['type'] = $case->type;
$_POST['stage'] = $case->stage;
$_POST['pri'] = $case->pri;
$_POST['status'] = $case->status;
$_POST['keywords'] = $case->keywords;
foreach($param as $field => $value) $_POST[$field] = $value;
$change = $this->objectModel->update('1');
if($change == array()) $change = '没有数据更新';
unset($_POST);
if(dao::isError()) return dao::getError();
return $objects;
return $change;
}
public function reviewTest($caseID)
/**
* Test review case.
*
* @param int $caseID
* @param object $case
* @access public
* @return array
*/
public function reviewTest($caseID, $case)
{
foreach($case as $field => $value) $_POST[$field] = $value;
$objects = $this->objectModel->review($caseID);
unset($_POST);
if(dao::isError()) return dao::getError();
return $objects;
@@ -251,15 +318,13 @@ class testcaseTest
return $objects;
}
public function getCases2LinkTest($caseID, $browseType = 'bySearch', $queryID = 0)
{
$objects = $this->objectModel->getCases2Link($caseID, $browseType = 'bySearch', $queryID = 0);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test batch update cases.
*
* @param array $param
* @access public
* @return array
*/
public function batchUpdateTest($param = array())
{
$batchUpdateField['caseIDList'] = array('1' => 1, '2' => 2, '3' => 3, '4' => 4);
@@ -343,22 +408,69 @@ class testcaseTest
return $objects;
}
public function joinStepTest($steps)
/**
* Test join steps to a string, thus can diff them.
*
* @param array $stepIDList
* @access public
* @return string
*/
public function joinStepTest($stepIDList)
{
$objects = $this->objectModel->joinStep($steps);
global $tester;
$steps = $tester->dao->select('*')->from(TABLE_CASESTEP)->where('id')->in($stepIDList)->fetchAll();
$string = $this->objectModel->joinStep($steps);
if(dao::isError()) return dao::getError();
return $objects;
$string = str_replace("\n", ' ', $string);
return $string;
}
public function createFromImportTest($productID, $branch = 0)
/**
* Test create from import.
*
* @param int $productID
* @param array $param
* @access public
* @return string
*/
public function createFromImportTest($productID, $param = array())
{
$objects = $this->objectModel->createFromImport($productID, $branch = 0);
global $tester;
$_POST['product'] = array('1' => '1', '2' => '1');
$_POST['keywords'] = array('1' => '这是关键词1', '2' => '这是关键词2');
$_POST['title'] = array('1' => '导入测试用例1', '2' => '导入测试用例2');
$_POST['module'] = array('1' => '0', '2' => '0');
$_POST['story'] = array('1' => '2', '2' => '2');
$_POST['pri'] = array('1' => '1', '2' => '2');
$_POST['type'] = array('1' => 'performance', '2' => 'feature');
$_POST['stage'] = array('1' => array('0' => 'feature'), '2' => array('0' => 'unittest'));
$_POST['precondition'] = array('1' => '这是前置条件1', '2' => '这是前置条件2');
$_POST['stepType'] = array('1' => array('1' => 'step'), '2' => array('1' => 'step'));
$_POST['desc'] = array('1' => array('1' => '用例步骤描述1'), '2' => array('1' => '用例步骤描述2'));
$_POST['expect'] = array('1' => array('1' => '这是用例预期结果1'), '2' => array('1' => '这是用例预期结果2'));
$_POST['isEndPage'] = '1';
$_POST['pagerID'] = '1';
foreach($param as $field => $value) $_POST[$field] = $value;
$fileName = __DIR__ . DS . 'a.txt';
fopen($fileName, 'a');
$tester->session->fileImport = $fileName;
$this->objectModel->createFromImport($productID, 0);
unset($_POST);
if(dao::isError()) return dao::getError();
return $objects;
$objects = $tester->dao->select('*')->from(TABLE_CASE)->where('product')->eq(1)->andWhere('lib')->eq(0)->markLeft()->andWhere('id')->gt(560)->orWhere('id')->in('1,2')->markRight()->fetchAll('title');
$titles = implode(',', array_keys($objects));
return $titles;
}
/**
@@ -377,21 +489,27 @@ class testcaseTest
return $object;
}
public function importFromLibTest($productID)
/**
* Test import case from Lib.
*
* @param int $productID
* @param array $caseIdList
* @access public
* @return array
*/
public function importFromLibTest($productID, $caseIdList = array())
{
$objects = $this->objectModel->importFromLib($productID);
$_POST['module'] = array('410' => 0, '409' => 'ditto', '408' => 'ditto', '407' => 'ditto', '406' => 'ditto', '405' => 'ditto', '404' => 'ditto', '403' => 'ditto', '402' => 'ditto', '401' => 'ditto');
$_POST['caseIdList'] = $caseIdList;
if(dao::isError()) return dao::getError();
$this->objectModel->importFromLib($productID);
return $objects;
}
public function buildSearchFormTest($productID, $products, $queryID, $actionURL, $projectID = 0)
{
$objects = $this->objectModel->buildSearchForm($productID, $products, $queryID, $actionURL, $projectID = 0);
unset($_POST);
if(dao::isError()) return dao::getError();
global $tester;
$objects = $tester->dao->select('*')->from(TABLE_CASE)->where('fromCaseID')->in($caseIdList)->orderBy('id_asc')->fetchAll();
return $objects;
}
@@ -427,29 +545,106 @@ class testcaseTest
return $object ? 1 : 2;
}
public function syncCase2ProjectTest($case, $caseID)
/**
* Test sync case to project.
*
* @param int $caseID
* @access public
* @return int
*/
public function syncCase2ProjectTest($caseID)
{
$objects = $this->objectModel->syncCase2Project($case, $caseID);
global $tester;
$tester->dao->delete()->from(TABLE_PROJECTCASE)->where('`case`')->eq($caseID)->exec();
$case = $this->objectModel->getByID($caseID);
$this->objectModel->syncCase2Project($case, $caseID);
if(dao::isError()) return dao::getError();
$objects = $tester->dao->select('*')->from(TABLE_PROJECTCASE)->where('`case`')->eq($caseID)->fetchAll();
return count($objects);
}
/**
* Test deal with the relationship between the case and project when edit the case.
*
* @param int $caseID
* @param string $objectType
* @param int $objectID
* @access public
* @return array
*/
public function updateCase2ProjectTest($caseID, $objectType, $objectID)
{
$oldCase = $this->objectModel->getByID($caseID);
$case = new stdclass();
$case->title = $oldCase->title;
$case->color = $oldCase->color;
$case->precondition = $oldCase->precondition;
$case->lastEditedDate = $oldCase->lastEditedDate;
$case->product = $objectType == 'product' ? $objectID : $oldCase->product;
$case->module = $oldCase->module;
$case->story = $objectType == 'story' ? $objectID : $oldCase->story;
$case->type = $oldCase->type;
$case->stage = $oldCase->stage;
$case->pri = $oldCase->pri;
$case->status = $oldCase->status;
$case->keywords = $oldCase->keywords;
$case->version = $oldCase->version + 1;
$case->linkCase = $oldCase->linkCase;
$case->lastEditedBy = $oldCase->lastEditedBy;
$case->branch = $oldCase->branch;
$this->objectModel->updateCase2Project($oldCase, $case, $caseID);
if(dao::isError()) return dao::getError();
global $tester;
$objects = $tester->dao->select('*')->from(TABLE_PROJECTCASE)->where('`case`')->eq($caseID)->fetchAll();
return $objects;
}
public function updateCase2ProjectTest($oldCase, $case, $caseID)
/**
* Test get status for different method.
*
* @param string $methodName
* @param object $case
* @param array $param
* @access public
* @return array
*/
public function getStatusTest($methodName, $case = null, $param = array())
{
$objects = $this->objectModel->updateCase2Project($oldCase, $case, $caseID);
if($methodName == 'update')
{
$case = $this->objectModel->getByID(1);
$_POST['title'] = $case->title;
$_POST['color'] = $case->color;
$_POST['precondition'] = $case->precondition;
$_POST['steps'] = array('用例步骤描述1');
$_POST['stepType'] = array('step');
$_POST['expects'] = array('这是用例预期结果1');
$_POST['comment'] = '';
$_POST['labels'] = '';
$_POST['lastEditedDate'] = $case->lastEditedDate;
$_POST['product'] = $case->product;
$_POST['module'] = $case->module;
$_POST['story'] = $case->story;
$_POST['type'] = $case->type;
$_POST['stage'] = $case->stage;
$_POST['pri'] = $case->pri;
$_POST['status'] = $case->status;
$_POST['keywords'] = $case->keywords;
if(dao::isError()) return dao::getError();
foreach($param as $field => $value) $_POST[$field] = $value;
}
return $objects;
}
$objects = $this->objectModel->getStatus($methodName, $case);
public function getStatusTest($methodName, $case = null)
{
$objects = $this->objectModel->getStatus($methodName, $case = null);
unset($_POST);
if(dao::isError()) return dao::getError();
if(dao::isError()) return dao::getError()[0];
return $objects;
}
+36 -36
View File
@@ -17,42 +17,42 @@ $objectId = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,
$action = new actionTest();
r($action->getListTest($objectType[0], $objectId[0])) && p('id,actor,extra') && e("1,admin,1"); // 测试获取objectType product objectId 1的动态信息
r($action->getListTest($objectType[1], $objectId[1])) && p('id,actor,extra') && e("2,dev17,1"); // 测试获取objectType story objectId 2的动态信息
r($action->getListTest($objectType[2], $objectId[2])) && p('id,actor,extra') && e("3,test18,1"); // 测试获取objectType productplan objectId 3的动态信息
r($action->getListTest($objectType[3], $objectId[3])) && p('id,actor,extra') && e("4,admin,1"); // 测试获取objectType release objectId 4的动态信息
r($action->getListTest($objectType[4], $objectId[4])) && p('id,actor,extra') && e("5,dev17,11"); // 测试获取objectType project objectId 5的动态信息
r($action->getListTest($objectType[5], $objectId[5])) && p('id,actor,extra') && e("6,test18,1"); // 测试获取objectType task objectId 6的动态信息
r($action->getListTest($objectType[6], $objectId[6])) && p('id,actor,extra') && e("7,admin,1"); // 测试获取objectType build objectId 7的动态信息
r($action->getListTest($objectType[7], $objectId[7])) && p('id,actor,extra') && e("8,dev17,1"); // 测试获取objectType bug objectId 8的动态信息
r($action->getListTest($objectType[8], $objectId[8])) && p('id,actor,extra') && e("9,test18,2"); // 测试获取objectType testcase objectId 9的动态信息
r($action->getListTest($objectType[9], $objectId[9])) && p('id,actor,extra') && e("10,admin,1"); // 测试获取objectType case objectId 10的动态信息
r($action->getListTest($objectType[10], $objectId[10])) && p('id,actor,extra') && e("11,dev17,1"); // 测试获取objectType testtask objectId 11的动态信息
r($action->getListTest($objectType[11], $objectId[11])) && p('id,actor,extra') && e("12,test18,1"); // 测试获取objectType user objectId 12的动态信息
r($action->getListTest($objectType[12], $objectId[12])) && p('id,actor,extra') && e("13,admin,1"); // 测试获取objectType doc objectId 13的动态信息
r($action->getListTest($objectType[13], $objectId[13])) && p('id,actor,extra') && e("14,dev17,1"); // 测试获取objectType doclib objectId 14的动态信息
r($action->getListTest($objectType[14], $objectId[14])) && p('id,actor,extra') && e("15,test18,1"); // 测试获取objectType todo objectId 15的动态信息
r($action->getListTest($objectType[15], $objectId[15])) && p('id,actor,extra') && e("16,admin,1"); // 测试获取objectType branch objectId 16的动态信息
r($action->getListTest($objectType[16], $objectId[16])) && p('id,actor,extra') && e("17,dev17,1"); // 测试获取objectType module objectId 17的动态信息
r($action->getListTest($objectType[0], $objectId[0])) && p('id,actor,extra') && e("1,admin,1"); // 测试获取objectType product objectId 1的动态信息
r($action->getListTest($objectType[1], $objectId[1])) && p('id,actor,extra') && e("2,dev17,1"); // 测试获取objectType story objectId 2的动态信息
r($action->getListTest($objectType[2], $objectId[2])) && p('id,actor,extra') && e("3,test18,1"); // 测试获取objectType productplan objectId 3的动态信息
r($action->getListTest($objectType[3], $objectId[3])) && p('id,actor,extra') && e("4,admin,1"); // 测试获取objectType release objectId 4的动态信息
r($action->getListTest($objectType[4], $objectId[4])) && p('id,actor,extra') && e("5,dev17,11"); // 测试获取objectType project objectId 5的动态信息
r($action->getListTest($objectType[5], $objectId[5])) && p('id,actor,extra') && e("6,test18,1"); // 测试获取objectType task objectId 6的动态信息
r($action->getListTest($objectType[6], $objectId[6])) && p('id,actor,extra') && e("7,admin,1"); // 测试获取objectType build objectId 7的动态信息
r($action->getListTest($objectType[7], $objectId[7])) && p('id,actor,extra') && e("8,dev17,1"); // 测试获取objectType bug objectId 8的动态信息
r($action->getListTest($objectType[8], $objectId[8])) && p('id,actor,extra') && e("9,test18,2"); // 测试获取objectType testcase objectId 9的动态信息
r($action->getListTest($objectType[9], $objectId[9])) && p('id,actor,extra') && e("10,admin,1"); // 测试获取objectType case objectId 10的动态信息
r($action->getListTest($objectType[10], $objectId[10])) && p('id,actor,extra') && e("11,dev17,1"); // 测试获取objectType testtask objectId 11的动态信息
r($action->getListTest($objectType[11], $objectId[11])) && p('id,actor,extra') && e("12,test18,1"); // 测试获取objectType user objectId 12的动态信息
r($action->getListTest($objectType[12], $objectId[12])) && p('id,actor,extra') && e("13,admin,1"); // 测试获取objectType doc objectId 13的动态信息
r($action->getListTest($objectType[13], $objectId[13])) && p('id,actor,extra') && e("14,dev17,1"); // 测试获取objectType doclib objectId 14的动态信息
r($action->getListTest($objectType[14], $objectId[14])) && p('id,actor,extra') && e("15,test18,1"); // 测试获取objectType todo objectId 15的动态信息
r($action->getListTest($objectType[15], $objectId[15])) && p('id,actor,extra') && e("16,admin,1"); // 测试获取objectType branch objectId 16的动态信息
r($action->getListTest($objectType[16], $objectId[16])) && p('id,actor,extra') && e("17,dev17,1"); // 测试获取objectType module objectId 17的动态信息
r($action->getListTest($objectType[17], $objectId[17])) && p('id,actor,extra') && e("18,test18,<a href='model/action/execution-task-1.' >#1 项目集1</a>"); // 测试获取objectType testsuite objectId 18的动态信息
r($action->getListTest($objectType[18], $objectId[18])) && p('id,actor,extra') && e("19,admin,1"); // 测试获取objectType caselib objectId 19的动态信息
r($action->getListTest($objectType[19], $objectId[19])) && p('id,actor,extra') && e("20,dev17,1"); // 测试获取objectType testreport objectId 20的动态信息
r($action->getListTest($objectType[20], $objectId[20])) && p('id,actor,extra') && e("21,test18,1"); // 测试获取objectType entry objectId 21的动态信息
r($action->getListTest($objectType[18], $objectId[18])) && p('id,actor,extra') && e("19,admin,1"); // 测试获取objectType caselib objectId 19的动态信息
r($action->getListTest($objectType[19], $objectId[19])) && p('id,actor,extra') && e("20,dev17,1"); // 测试获取objectType testreport objectId 20的动态信息
r($action->getListTest($objectType[20], $objectId[20])) && p('id,actor,extra') && e("21,test18,1"); // 测试获取objectType entry objectId 21的动态信息
r($action->getListTest($objectType[21], $objectId[21])) && p('id,actor,extra') && e("22,admin,<a href='model/action/bug-view-1.' >1</a>"); // 测试获取objectType webhook objectId 22的动态信息
r($action->getListTest($objectType[22], $objectId[22])) && p('id,actor,extra') && e("23,dev17,1"); // 测试获取objectType review objectId 23的动态信息
r($action->getListTest($objectType[0], $objectId[23])) && p('id,actor,extra') && e("24,test18,1"); // 测试获取objectType product objectId 24的动态信息
r($action->getListTest($objectType[1], $objectId[24])) && p('id,actor,extra') && e("25,admin,1"); // 测试获取objectType story objectId 25的动态信息
r($action->getListTest($objectType[2], $objectId[25])) && p('id,actor,extra') && e("26,dev17,1"); // 测试获取objectType productplan objectId 26的动态信息
r($action->getListTest($objectType[3], $objectId[26])) && p('id,actor,extra') && e("27,test18,1"); // 测试获取objectType release objectId 27的动态信息
r($action->getListTest($objectType[4], $objectId[27])) && p('id,actor,extra') && e("28,admin,33"); // 测试获取objectType project objectId 28的动态信息
r($action->getListTest($objectType[5], $objectId[28])) && p('id,actor,extra') && e("29,dev17,1"); // 测试获取objectType task objectId 29的动态信息
r($action->getListTest($objectType[6], $objectId[29])) && p('id,actor,extra') && e("30,test18,1"); // 测试获取objectType build objectId 30的动态信息
r($action->getListTest($objectType[7], $objectId[30])) && p('id,actor,extra') && e("31,admin,1"); // 测试获取objectType bug objectId 31的动态信息
r($action->getListTest($objectType[8], $objectId[31])) && p('id,actor,extra') && e("32,项目经理17,1"); // 测试获取objectType testcase objectId 32的动态信息
r($action->getListTest($objectType[9], $objectId[32])) && p('id,actor,extra') && e("33,test18,1"); // 测试获取objectType case objectId 33的动态信息
r($action->getListTest($objectType[10], $objectId[33])) && p('id,actor,extra') && e("34,admin,1"); // 测试获取objectType testtask objectId 34的动态信息
r($action->getListTest($objectType[11], $objectId[34])) && p('id,actor,extra') && e("35,dev17,1"); // 测试获取objectType user objectId 35的动态信息
r($action->getListTest($objectType[12], $objectId[35])) && p('id,actor,extra') && e("36,test18,1"); // 测试获取objectType doc objectId 36的动态信息
r($action->getListTest($objectType[13], $objectId[36])) && p('id,actor,extra') && e("37,admin,1"); // 测试获取objectType doclib objectId 37的动态信息
r($action->getListTest($objectType[14], $objectId[37])) && p('id,actor,extra') && e("38,dev17,1"); // 测试获取objectType todo objectId 38的动态信息
r($action->getListTest($objectType[22], $objectId[22])) && p('id,actor,extra') && e("23,dev17,1"); // 测试获取objectType review objectId 23的动态信息
r($action->getListTest($objectType[0], $objectId[23])) && p('id,actor,extra') && e("24,test18,1"); // 测试获取objectType product objectId 24的动态信息
r($action->getListTest($objectType[1], $objectId[24])) && p('id,actor,extra') && e("25,admin,1"); // 测试获取objectType story objectId 25的动态信息
r($action->getListTest($objectType[2], $objectId[25])) && p('id,actor,extra') && e("26,dev17,1"); // 测试获取objectType productplan objectId 26的动态信息
r($action->getListTest($objectType[3], $objectId[26])) && p('id,actor,extra') && e("27,test18,1"); // 测试获取objectType release objectId 27的动态信息
r($action->getListTest($objectType[4], $objectId[27])) && p('id,actor,extra') && e("28,admin,33"); // 测试获取objectType project objectId 28的动态信息
r($action->getListTest($objectType[5], $objectId[28])) && p('id,actor,extra') && e("29,dev17,1"); // 测试获取objectType task objectId 29的动态信息
r($action->getListTest($objectType[6], $objectId[29])) && p('id,actor,extra') && e("30,test18,1"); // 测试获取objectType build objectId 30的动态信息
r($action->getListTest($objectType[7], $objectId[30])) && p('id,actor,extra') && e("31,admin,1"); // 测试获取objectType bug objectId 31的动态信息
r($action->getListTest($objectType[8], $objectId[31])) && p('id,actor,extra') && e("32,项目经理17,1"); // 测试获取objectType testcase objectId 32的动态信息
r($action->getListTest($objectType[9], $objectId[32])) && p('id,actor,extra') && e("33,test18,1"); // 测试获取objectType case objectId 33的动态信息
r($action->getListTest($objectType[10], $objectId[33])) && p('id,actor,extra') && e("34,admin,1"); // 测试获取objectType testtask objectId 34的动态信息
r($action->getListTest($objectType[11], $objectId[34])) && p('id,actor,extra') && e("35,dev17,1"); // 测试获取objectType user objectId 35的动态信息
r($action->getListTest($objectType[12], $objectId[35])) && p('id,actor,extra') && e("36,test18,1"); // 测试获取objectType doc objectId 36的动态信息
r($action->getListTest($objectType[13], $objectId[36])) && p('id,actor,extra') && e("37,admin,1"); // 测试获取objectType doclib objectId 37的动态信息
r($action->getListTest($objectType[14], $objectId[37])) && p('id,actor,extra') && e("38,dev17,1"); // 测试获取objectType todo objectId 38的动态信息
r($action->getListTest($objectType[15], $objectId[38])) && p('id,actor,extra') && e("39,test18,<a href='model/action/build-view-1-branch.' >项目版本版本1</a>"); // 测试获取objectType branch objectId 39的动态信息
+25
View File
@@ -0,0 +1,25 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/testcase.class.php';
su('admin');
/**
title=测试 testcaseModel->createFromImport();
cid=1
pid=1
*/
$productID = 1;
$param1 = array('id' => array('1' => 1, '2' => 2), 'title' => array('1' => '导入覆盖的用例1', '2' => '导入覆盖的用例2'), 'insert' => '0');
$param2 = array('id' => array('1' => 1, '2' => 2), 'title' => array('1' => '导入插入的用例1', '2' => '导入插入的用例2'), 'insert' => '1');
$testcase = new testcaseTest();
r($testcase->createFromImportTest($productID)) && p() && e('这个是测试用例1,这个是测试用例2,导入测试用例1,导入测试用例2'); // 测试直接导入数据
r($testcase->createFromImportTest($productID, $param1)) && p() && e('导入覆盖的用例1,导入覆盖的用例2,导入测试用例1,导入测试用例2'); // 测试导入数据覆盖原有数据
r($testcase->createFromImportTest($productID, $param2)) && p() && e('导入覆盖的用例1,导入覆盖的用例2,导入测试用例1,导入测试用例2,导入插入的用例1,导入插入的用例2'); // 测试导入数据不覆盖原有数据
system("./ztest init");
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/testcase.class.php';
su('admin');
/**
title=测试 testcaseModel->getStatus();
cid=1
pid=1
*/
$typeList = array('create', 'review', 'update');
$case1 = new stdclass();
$case1->status = 'pass';
$case2 = new stdclass();
$case2->status = 'clarify';
$case = null;
$param1 = array('lastEditedDate' => '2022-03-04 00:00:00');
$testcase = new testcaseTest();
r($testcase->getStatusTest($typeList[0])) && p() && e('normal'); // 测试获取create的状态
r($testcase->getStatusTest($typeList[1], $case1)) && p() && e('pass'); // 测试获取review pass 的状态
r($testcase->getStatusTest($typeList[1], $case2)) && p() && e('clarify'); // 测试获取review clarify 的状态
r($testcase->getStatusTest($typeList[2], $case)) && p('1') && e('wait'); // 测试获取update的状态
r($testcase->getStatusTest($typeList[2], $case, $param1)) && p() && e('该记录可能已经被改动。请刷新页面重新编辑!'); // 测试获取update 别人变更 的状态
+45
View File
@@ -0,0 +1,45 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/testcase.class.php';
su('admin');
/**
title=测试 testcaseModel->getTestCases();
cid=1
pid=1
*/
$productID = array('1', '2', '3', '4', '5');
$browseType = array('all', 'wait', 'bymodule', 'needconfirm', 'bysuite');
$suiteID = array('1', '3', '5', '7', '9');
$testcase = new testcaseTest();
r($testcase->getTestCasesTest($productID[0], $browseType[0], $suiteID[0])) && p('1:title;2:title;3:title;4:title') && e('这个是测试用例1;这个是测试用例2;这个是测试用例3;这个是测试用例4'); // 测试查询产品1 suiteID 1 browseType all 的测试用例
r($testcase->getTestCasesTest($productID[0], $browseType[1], $suiteID[0])) && p('1:title') && e('这个是测试用例1'); // 测试查询产品1 suiteID 1 browseType wait 的测试用例
r($testcase->getTestCasesTest($productID[0], $browseType[2], $suiteID[0])) && p('1:title;2:title;3:title;4:title') && e('这个是测试用例1;这个是测试用例2;这个是测试用例3;这个是测试用例4'); // 测试查询产品1 suiteID 1 browseType bymodule 的测试用例
r($testcase->getTestCasesTest($productID[0], $browseType[3], $suiteID[0])) && p('0:title;1:title;2:title;3:title') && e('这个是测试用例4;这个是测试用例3;这个是测试用例2;这个是测试用例1'); // 测试查询产品1 suiteID 1 browseType needconfirm 的测试用例
r($testcase->getTestCasesTest($productID[0], $browseType[4], $suiteID[0])) && p('1:title;2:title') && e('这个是测试用例1;这个是测试用例2'); // 测试查询产品1 suiteID 1 browseType bysuite 的测试用例
r($testcase->getTestCasesTest($productID[1], $browseType[0], $suiteID[1])) && p('5:title;6:title;7:title;8:title') && e('这个是测试用例5;这个是测试用例6;这个是测试用例7;这个是测试用例8'); // 测试查询产品2 suiteID 3 browseType all 的测试用例
r($testcase->getTestCasesTest($productID[1], $browseType[1], $suiteID[1])) && p('5:title') && e('这个是测试用例5'); // 测试查询产品2 suiteID 3 browseType wait 的测试用例
r($testcase->getTestCasesTest($productID[1], $browseType[2], $suiteID[1])) && p('5:title;6:title;7:title;8:title') && e('这个是测试用例5;这个是测试用例6;这个是测试用例7;这个是测试用例8'); // 测试查询产品2 suiteID 3 browseType bymodule 的测试用例
r($testcase->getTestCasesTest($productID[1], $browseType[3], $suiteID[1])) && p('0:title;1:title;2:title;3:title') && e('这个是测试用例8;这个是测试用例7;这个是测试用例6;这个是测试用例5'); // 测试查询产品2 suiteID 3 browseType needconfirm 的测试用例
r($testcase->getTestCasesTest($productID[1], $browseType[4], $suiteID[1])) && p('5:title;6:title') && e('这个是测试用例5;这个是测试用例6'); // 测试查询产品2 suiteID 3 browseType bysuite 的测试用例
r($testcase->getTestCasesTest($productID[2], $browseType[0], $suiteID[2])) && p('9:title;10:title;11:title;12:title') && e('这个是测试用例9;这个是测试用例10;这个是测试用例11;这个是测试用例12'); // 测试查询产品3 suiteID 5 browseType all 的测试用例
r($testcase->getTestCasesTest($productID[2], $browseType[1], $suiteID[2])) && p('9:title') && e('这个是测试用例9'); // 测试查询产品3 suiteID 5 browseType wait 的测试用例
r($testcase->getTestCasesTest($productID[2], $browseType[2], $suiteID[2])) && p('9:title;10:title;11:title;12:title') && e('这个是测试用例9;这个是测试用例10;这个是测试用例11;这个是测试用例12'); // 测试查询产品3 suiteID 5 browseType bymodule 的测试用例
r($testcase->getTestCasesTest($productID[2], $browseType[3], $suiteID[2])) && p('0:title;1:title;2:title;3:title') && e('这个是测试用例12;这个是测试用例11;这个是测试用例10;这个是测试用例9'); // 测试查询产品3 suiteID 5 browseType needconfirm 的测试用例
r($testcase->getTestCasesTest($productID[2], $browseType[4], $suiteID[2])) && p('9:title;10:title') && e('这个是测试用例9;这个是测试用例10'); // 测试查询产品3 suiteID 5 browseType bysuite 的测试用例
r($testcase->getTestCasesTest($productID[3], $browseType[0], $suiteID[3])) && p('13:title;14:title;15:title;16:title') && e('这个是测试用例13;这个是测试用例14;这个是测试用例15;这个是测试用例16'); // 测试查询产品4 suiteID 7 browseType all 的测试用例
r($testcase->getTestCasesTest($productID[3], $browseType[1], $suiteID[3])) && p('13:title') && e('这个是测试用例13'); // 测试查询产品4 suiteID 7 browseType wait 的测试用例
r($testcase->getTestCasesTest($productID[3], $browseType[2], $suiteID[3])) && p('13:title;14:title;15:title;16:title') && e('这个是测试用例13;这个是测试用例14;这个是测试用例15;这个是测试用例16'); // 测试查询产品4 suiteID 7 browseType bymodule 的测试用例
r($testcase->getTestCasesTest($productID[3], $browseType[3], $suiteID[3])) && p('0:title;1:title;2:title;3:title') && e('这个是测试用例16;这个是测试用例15;这个是测试用例14;这个是测试用例13'); // 测试查询产品4 suiteID 7 browseType needconfirm 的测试用例
r($testcase->getTestCasesTest($productID[3], $browseType[4], $suiteID[3])) && p('13:title;14:title') && e('这个是测试用例13;这个是测试用例14'); // 测试查询产品4 suiteID 7 browseType bysuite 的测试用例
r($testcase->getTestCasesTest($productID[4], $browseType[0], $suiteID[4])) && p('17:title;18:title;19:title;20:title') && e('这个是测试用例17;这个是测试用例18;这个是测试用例19;这个是测试用例20'); // 测试查询产品5 suiteID 9 browseType all 的测试用例
r($testcase->getTestCasesTest($productID[4], $browseType[1], $suiteID[4])) && p('17:title') && e('这个是测试用例17'); // 测试查询产品5 suiteID 9 browseType wait 的测试用例
r($testcase->getTestCasesTest($productID[4], $browseType[2], $suiteID[4])) && p('17:title;18:title;19:title;20:title') && e('这个是测试用例17;这个是测试用例18;这个是测试用例19;这个是测试用例20'); // 测试查询产品5 suiteID 9 browseType bymodule 的测试用例
r($testcase->getTestCasesTest($productID[4], $browseType[3], $suiteID[4])) && p('0:title;1:title;2:title;3:title') && e('这个是测试用例20;这个是测试用例19;这个是测试用例18;这个是测试用例17'); // 测试查询产品5 suiteID 9 browseType needconfirm 的测试用例
r($testcase->getTestCasesTest($productID[4], $browseType[4], $suiteID[4])) && p('17:title;18:title') && e('这个是测试用例17;这个是测试用例18'); // 测试查询产品5 suiteID 9 browseType bysuite 的测试用例
+25
View File
@@ -0,0 +1,25 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/testcase.class.php';
su('admin');
/**
title=测试 testcaseModel->importFromLib();
cid=1
pid=1
*/
$productID = 1;
$caseIdList = array(array('401' => '401', '402' => '402'), array('403' => '403', '404' => '404'), array('405' => '405', '406' => '406'), array('407' => '407', '408' => '408'), array('409' => '409', '410' => '410'));
$testcase = new testcaseTest();
r($testcase->importFromLibTest($productID, $caseIdList[0])) && p('0:title;1:title') && e('用例库用例1;用例库用例2'); // 测试导入用例库用例 401 402
r($testcase->importFromLibTest($productID, $caseIdList[1])) && p('0:title;1:title') && e('用例库用例3;用例库用例4'); // 测试导入用例库用例 403 404
r($testcase->importFromLibTest($productID, $caseIdList[2])) && p('0:title;1:title') && e('用例库用例5;用例库用例6'); // 测试导入用例库用例 405 406
r($testcase->importFromLibTest($productID, $caseIdList[3])) && p('0:title;1:title') && e('用例库用例7;用例库用例8'); // 测试导入用例库用例 407 408
r($testcase->importFromLibTest($productID, $caseIdList[4])) && p('0:title;1:title') && e('用例库用例9;用例库用例10'); // 测试导入用例库用例 409 410
system("./ztest init");
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/testcase.class.php';
su('admin');
/**
title=测试 testcaseModel->joinStep();
cid=1
pid=1
*/
$stepIDList = array('1,2', '3,4', '5,6', '7,8', '9,10');
$testcase = new testcaseTest();
r($testcase->joinStepTest($stepIDList[0])) && p() && e('用例步骤描述1 EXPECT:这是用例预期结果1 用例步骤描述2 EXPECT:这是用例预期结果2'); // 测试获取步骤 1 2 的字符串
r($testcase->joinStepTest($stepIDList[1])) && p() && e('用例步骤描述3 EXPECT:这是用例预期结果3 用例步骤描述4 EXPECT:这是用例预期结果4'); // 测试获取步骤 3 4 的字符串
r($testcase->joinStepTest($stepIDList[2])) && p() && e('用例步骤描述5 EXPECT:这是用例预期结果5 用例步骤描述6 EXPECT:这是用例预期结果6'); // 测试获取步骤 5 6 的字符串
r($testcase->joinStepTest($stepIDList[3])) && p() && e('用例步骤描述7 EXPECT:这是用例预期结果7 用例步骤描述8 EXPECT:这是用例预期结果8'); // 测试获取步骤 7 8 的字符串
r($testcase->joinStepTest($stepIDList[4])) && p() && e('用例步骤描述9 EXPECT:这是用例预期结果9 用例步骤描述10 EXPECT:这是用例预期结果10'); // 测试获取步骤 9 10 的字符串
+49
View File
@@ -0,0 +1,49 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/testcase.class.php';
su('admin');
/**
title=测试 testcaseModel->review();
cid=1
pid=1
*/
$caseIDList = array(1, 5, 9, 13, 17);
$case1 = new stdclass();
$case1->result = 'pass';
$case1->status = 'normal';
$case1->reviewedBy = array('test1');
$case2 = new stdclass();
$case2->result = 'clarify';
$case2->status = 'wait';
$case2->reviewedBy = array('test2');
$case3 = new stdclass();
$case3->result = 'pass';
$case3->status = 'normal';
$case3->reviewedBy = array('test3');
$case4 = new stdclass();
$case4->result = 'clarify';
$case4->status = 'wait';
$case4->reviewedBy = array('test4');
$case5 = new stdclass();
$case5->result = 'pass';
$case5->status = 'normal';
$case5->reviewedBy = array('test5');
$testcase = new testcaseTest();
r($testcase->reviewTest($caseIDList[0], $case1)) && p('0:field,old,new') && e('status,wait,normal'); // 测试评审用例 1
r($testcase->reviewTest($caseIDList[1], $case2)) && p('0:field,old,new') && e('reviewedBy,admin,test2'); // 测试评审用例 2
r($testcase->reviewTest($caseIDList[2], $case3)) && p('0:field,old,new') && e('status,wait,normal'); // 测试评审用例 3
r($testcase->reviewTest($caseIDList[3], $case4)) && p('0:field,old,new') && e('reviewedBy,admin,test4'); // 测试评审用例 4
r($testcase->reviewTest($caseIDList[4], $case5)) && p('0:field,old,new') && e('status,wait,normal'); // 测试评审用例 5
system("./ztest init");
+24
View File
@@ -0,0 +1,24 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/testcase.class.php';
su('admin');
/**
title=测试 testcaseModel->syncCase2Project();
cid=1
pid=1
*/
$caseIDList = array(1, 5, 9, 13, 17, 2);
$testcase = new testcaseTest();
r($testcase->syncCase2ProjectTest($caseIDList[0])) && p() && e('2'); // 测试同步用例 1 到关联项目中
r($testcase->syncCase2ProjectTest($caseIDList[1])) && p() && e('2'); // 测试同步用例 2 到关联项目中
r($testcase->syncCase2ProjectTest($caseIDList[2])) && p() && e('2'); // 测试同步用例 3 到关联项目中
r($testcase->syncCase2ProjectTest($caseIDList[3])) && p() && e('2'); // 测试同步用例 4 到关联项目中
r($testcase->syncCase2ProjectTest($caseIDList[4])) && p() && e('2'); // 测试同步用例 5 到关联项目中
system("./ztest init");
+27
View File
@@ -0,0 +1,27 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/testcase.class.php';
su('admin');
/**
title=测试 testcaseModel->update();
cid=1
pid=1
*/
$changeTitle = array('title' => '修改后的名称');
$changePrecondition = array('precondition' => '修改后的前置条件');
$changeStatus = array('status' => 'normal');
$changePri = array('pri' => '3');
$testcase = new testcaseTest();
r($testcase->updateTest($changeTitle)) && p('0:field,old,new') && e('title,这个是测试用例1,修改后的名称'); // 测试修改标题
r($testcase->updateTest($changeTitle)) && p('0:field,old,new') && e('没有数据更新'); // 测试重复修改标题
r($testcase->updateTest($changePrecondition)) && p('0:field,old,new') && e('precondition,这是前置条件1,修改后的前置条件'); // 测试修改前置条件
r($testcase->updateTest($changeStatus)) && p('0:field,old,new') && e('status,wait,normal'); // 测试修改状态
r($testcase->updateTest($changePri)) && p('0:field,old,new') && e('pri,1,3'); // 测试修改优先级
system("./ztest init");
+31
View File
@@ -0,0 +1,31 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/testcase.class.php';
su('admin');
/**
title=测试 testcaseModel->updateCase2Project();
cid=1
pid=1
*/
$caseIDList = array('1', '3', '5', '7', '9');
$objectTypeList = array('product', 'story');
$objectIDList = array('2', '1', '6', '2');
$testcase = new testcaseTest();
r($testcase->updateCase2ProjectTest($caseIDList[0], $objectTypeList[0], $objectIDList[0])) && p('0:project,product,case') && e('101,2,1'); // 测试修改用例 1 产品
r($testcase->updateCase2ProjectTest($caseIDList[0], $objectTypeList[1], $objectIDList[2])) && p('0:project,product,case;1:project,product,case;2:project,product,case') && e('101,2,1;12,1,1;102,1,1'); // 测试修改用例 1 需求
r($testcase->updateCase2ProjectTest($caseIDList[1], $objectTypeList[0], $objectIDList[0])) && p('0:project,product,case') && e('101,2,3'); // 测试修改用例 3 产品
r($testcase->updateCase2ProjectTest($caseIDList[1], $objectTypeList[1], $objectIDList[2])) && p('0:project,product,case;1:project,product,case;2:project,product,case') && e('101,2,3;12,1,3;102,1,3'); // 测试修改用例 3 需求
r($testcase->updateCase2ProjectTest($caseIDList[2], $objectTypeList[0], $objectIDList[1])) && p('0:project,product,case') && e('102,1,5'); // 测试修改用例 5 产品
r($testcase->updateCase2ProjectTest($caseIDList[2], $objectTypeList[1], $objectIDList[3])) && p('0:project,product,case;1:project,product,case;2:project,product,case') && e('102,1,5;11,2,5;101,2,5'); // 测试修改用例 5 需求
r($testcase->updateCase2ProjectTest($caseIDList[3], $objectTypeList[0], $objectIDList[1])) && p('0:project,product,case') && e('102,1,7'); // 测试修改用例 7 产品
r($testcase->updateCase2ProjectTest($caseIDList[3], $objectTypeList[1], $objectIDList[3])) && p('0:project,product,case;1:project,product,case;2:project,product,case') && e('102,1,7;11,2,7;101,2,7'); // 测试修改用例 7 需求
r($testcase->updateCase2ProjectTest($caseIDList[4], $objectTypeList[0], $objectIDList[1])) && p('0:project,product,case') && e('103,1,9'); // 测试修改用例 9 产品
r($testcase->updateCase2ProjectTest($caseIDList[4], $objectTypeList[1], $objectIDList[3])) && p('0:project,product,case;1:project,product,case;2:project,product,case') && e('103,1,9;11,3,9;101,3,9'); // 测试修改用例 9 需求
system("./ztest init");