diff --git a/module/testtask/test/lib/testtaskzen.unittest.class.php b/module/testtask/test/lib/testtaskzen.unittest.class.php index cae1e63740..5c5b1dddc2 100644 --- a/module/testtask/test/lib/testtaskzen.unittest.class.php +++ b/module/testtask/test/lib/testtaskzen.unittest.class.php @@ -1013,4 +1013,61 @@ class testtaskZenTest $this->tester->app->tab = $originalTab; } } + + /** + * Test setDropMenu method. + * + * @param int $productID + * @param object $task + * @param string $tab + * @access public + * @return mixed + */ + public function setDropMenuTest($productID = 1, $task = null, $tab = 'qa') + { + global $app; + $originalTab = $app->tab; + $originalRawMethod = isset($app->rawMethod) ? $app->rawMethod : ''; + $app->tab = $tab; + $app->rawMethod = 'browse'; + + try { + // 创建默认任务对象 + if($task === null) + { + $task = new stdclass(); + $task->id = 1; + $task->name = 'Test Task'; + $task->project = 1; + $task->execution = 1; + } + + $method = $this->testtaskZenTest->getMethod('setDropMenu'); + $method->setAccessible(true); + + $testtaskZenInstance = $this->testtaskZenTest->newInstance(); + $result = $method->invokeArgs($testtaskZenInstance, array((int)$productID, $task)); + if(dao::isError()) return dao::getError(); + + // 验证视图变量是否设置 + $view = $testtaskZenInstance->view; + $switcherParams = isset($view->switcherParams) ? $view->switcherParams : ''; + $switcherText = isset($view->switcherText) ? $view->switcherText : ''; + $switcherObjectID = isset($view->switcherObjectID) ? $view->switcherObjectID : ''; + + // 调试输出 + // echo "Debug: tab={$app->tab}, switcherParams={$switcherParams}\n"; + + return array( + 'switcherParams' => $switcherParams, + 'switcherText' => $switcherText, + 'switcherObjectID' => $switcherObjectID + ); + } catch(Exception $e) { + return 'error: ' . $e->getMessage(); + } finally { + $app->tab = $originalTab; + $app->rawMethod = $originalRawMethod; + } + } } \ No newline at end of file diff --git a/module/testtask/test/zen/setdropmenu.php b/module/testtask/test/zen/setdropmenu.php new file mode 100755 index 0000000000..15846b7a42 --- /dev/null +++ b/module/testtask/test/zen/setdropmenu.php @@ -0,0 +1,53 @@ +#!/usr/bin/env php +id->range('1-5'); +$table->name->range('产品1,产品2,产品3,产品4,产品5'); +$table->type->range('normal{3},branch{2}'); +$table->gen(5); + +$projectTable = zenData('project'); +$projectTable->id->range('1-3'); +$projectTable->name->range('项目1,项目2,项目3'); +$projectTable->type->range('project'); +$projectTable->gen(3); + +// 3. 用户登录(选择合适角色) +su('admin'); + +// 4. 创建测试实例(变量名与模块名一致) +$testtaskTest = new testtaskZenTest(); + +// 创建任务对象 +$task = new stdclass(); +$task->id = 1; +$task->name = '测试任务1'; +$task->project = 1; +$task->execution = 1; + +// 5. 🔴 强制要求:必须包含至少5个测试步骤 +r($testtaskTest->setDropMenuTest(1, $task, 'qa')) && p('switcherParams') && e('productID=1&branch=&taskID=1&module=testtask&method=browse&objectType=&objectID='); // 步骤1:qa tab下的正常产品和任务 +r($testtaskTest->setDropMenuTest(1, $task, 'project')) && p('switcherParams') && e('productID=1&branch=&taskID=1&module=testtask&method=browse&objectType=&objectID='); // 步骤2:project tab下的项目相关参数设置 +r($testtaskTest->setDropMenuTest(1, $task, 'execution')) && p('switcherParams') && e('productID=1&branch=&taskID=1&module=testtask&method=browse&objectType=&objectID='); // 步骤3:execution tab下的执行相关参数设置 +r($testtaskTest->setDropMenuTest(2, null, 'qa')) && p('switcherText') && e('Test Task'); // 步骤4:空任务对象的处理 +r($testtaskTest->setDropMenuTest(3, $task, 'qa')) && p('switcherObjectID') && e('1'); // 步骤5:多分支产品的情况下参数设置 \ No newline at end of file