+ [misc] Add unit tests for testcaseZen::assignForBrowse() method

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-11-12 17:45:43 +08:00
co-authored by Claude
parent 015fffd183
commit ccd131d8a8
2 changed files with 149 additions and 0 deletions
@@ -2785,4 +2785,50 @@ class testcaseZenTest
return $result;
}
/**
* Test assignForBrowse method.
*
* @param int $productID
* @param string $branch
* @param string $browseType
* @param int $projectID
* @param int $param
* @param int $moduleID
* @param int $suiteID
* @param string $caseType
* @access public
* @return array
*/
public function assignForBrowseTest(int $productID, string $branch, string $browseType, int $projectID, int $param, int $moduleID, int $suiteID, string $caseType): array
{
global $tester;
// 设置 session
$tester->session->set('project', $projectID);
// 调用被测方法并获取 view 属性
callZenMethod('testcase', 'assignForBrowse', [$productID, $branch, $browseType, $projectID, $param, $moduleID, $suiteID, $caseType]);
$view = callZenMethod('testcase', 'assignForBrowse', [$productID, $branch, $browseType, $projectID, $param, $moduleID, $suiteID, $caseType], 'view');
// 获取视图数据
$result = array();
$result['projectID'] = $view->projectID ?? 0;
$result['browseType'] = $view->browseType ?? '';
$result['param'] = $view->param ?? 0;
$result['moduleID'] = $view->moduleID ?? 0;
$result['moduleName'] = $view->moduleName ?? '';
$result['suiteID'] = $view->suiteID ?? 0;
$result['caseType'] = $view->caseType ?? '';
$result['projectType'] = $view->projectType ?? '';
$result['hasUsers'] = isset($view->users) && count($view->users) > 0 ? 1 : 0;
$result['hasModules'] = isset($view->modules) && count($view->modules) > 0 ? 1 : 0;
$result['hasSuites'] = isset($view->suiteList) && count($view->suiteList) > 0 ? 1 : 0;
$result['hasLibraries'] = isset($view->libraries) && count($view->libraries) > 0 ? 1 : 0;
$result['switcherObjectID'] = $view->switcherObjectID ?? 0;
if(dao::isError()) return dao::getError();
return $result;
}
}
+103
View File
@@ -0,0 +1,103 @@
#!/usr/bin/env php
<?php
/**
title=测试 testcaseZen::assignForBrowse();
timeout=0
cid=0
- 步骤1:正常产品浏览(有项目)
- 属性projectID @1
- 属性browseType @all
- 属性moduleID @0
- 步骤2:正常产品浏览(无项目)
- 属性projectID @0
- 属性browseType @all
- 属性moduleID @0
- 步骤3:指定模块ID浏览
- 属性moduleID @5
- 属性moduleName @模块E
- 步骤4:分支产品浏览
- 属性projectID @2
- 属性browseType @all
- 步骤5:指定测试套件浏览
- 属性suiteID @3
- 属性caseType @feature
- 步骤6:按状态浏览
- 属性browseType @wait
- 属性param @0
- 步骤7:按需求浏览
- 属性browseType @bystory
- 属性param @10
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/testcasezen.unittest.class.php';
// 2. zendata数据准备(根据需要配置)
$productTable = zenData('product');
$productTable->id->range('1-5');
$productTable->name->range('产品A,产品B,产品C,产品D,产品E');
$productTable->type->range('normal{2},branch{2},platform{1}');
$productTable->status->range('normal');
$productTable->createdBy->range('admin');
$productTable->createdDate->range('`2024-01-01 10:00:00`');
$productTable->deleted->range('0');
$productTable->gen(5);
$projectTable = zenData('project');
$projectTable->id->range('1-5');
$projectTable->name->range('项目A,项目B,项目C,项目D,项目E');
$projectTable->type->range('project');
$projectTable->model->range('scrum{2},waterfall{2},kanban{1}');
$projectTable->status->range('doing');
$projectTable->openedBy->range('admin');
$projectTable->openedDate->range('`2024-01-01 10:00:00`');
$projectTable->deleted->range('0');
$projectTable->gen(5);
$moduleTable = zenData('module');
$moduleTable->id->range('1-10');
$moduleTable->root->range('1{5},2{3},3{2}');
$moduleTable->branch->range('0');
$moduleTable->name->range('模块A,模块B,模块C,模块D,模块E,模块F,模块G,模块H,模块I,模块J');
$moduleTable->type->range('case');
$moduleTable->parent->range('0');
$moduleTable->grade->range('1');
$moduleTable->deleted->range('0');
$moduleTable->gen(10);
$suiteTable = zenData('testsuite');
$suiteTable->id->range('1-5');
$suiteTable->name->range('测试套件A,测试套件B,测试套件C,测试套件D,测试套件E');
$suiteTable->type->range('public');
$suiteTable->product->range('1{3},2{2}');
$suiteTable->deleted->range('0');
$suiteTable->gen(5);
$userTable = zenData('user');
$userTable->id->range('1-10');
$userTable->account->range('admin,user1,user2,user3,user4,user5,user6,user7,user8,user9');
$userTable->realname->range('管理员,用户1,用户2,用户3,用户4,用户5,用户6,用户7,用户8,用户9');
$userTable->password->range('123456');
$userTable->role->range('admin,qa{5},dev{3},pm{1}');
$userTable->deleted->range('0');
$userTable->gen(10);
// 3. 用户登录(选择合适角色)
su('admin');
// 4. 创建测试实例(变量名与模块名一致)
$testcaseTest = new testcaseZenTest();
// 5. 🔴 强制要求:必须包含至少5个测试步骤
r($testcaseTest->assignForBrowseTest(1, '0', 'all', 1, 0, 0, 0, 'feature')) && p('projectID,browseType,moduleID') && e('1,all,0'); // 步骤1:正常产品浏览(有项目)
r($testcaseTest->assignForBrowseTest(2, '0', 'all', 0, 0, 0, 0, 'feature')) && p('projectID,browseType,moduleID') && e('0,all,0'); // 步骤2:正常产品浏览(无项目)
r($testcaseTest->assignForBrowseTest(1, '0', 'all', 0, 0, 5, 0, 'feature')) && p('moduleID,moduleName') && e('5,模块E'); // 步骤3:指定模块ID浏览
r($testcaseTest->assignForBrowseTest(2, '1', 'all', 2, 0, 0, 0, 'feature')) && p('projectID,browseType') && e('2,all'); // 步骤4:分支产品浏览
r($testcaseTest->assignForBrowseTest(1, '0', 'all', 0, 0, 0, 3, 'feature')) && p('suiteID,caseType') && e('3,feature'); // 步骤5:指定测试套件浏览
r($testcaseTest->assignForBrowseTest(1, '0', 'wait', 0, 0, 0, 0, 'feature')) && p('browseType,param') && e('wait,0'); // 步骤6:按状态浏览
r($testcaseTest->assignForBrowseTest(1, '0', 'bystory', 0, 10, 0, 0, 'feature')) && p('browseType,param') && e('bystory,10'); // 步骤7:按需求浏览