From ceadc57be16529960e5d76290bdc2f35c8a5c4da Mon Sep 17 00:00:00 2001 From: liugang Date: Thu, 18 Sep 2025 20:04:06 +0800 Subject: [PATCH] + [misc] Add unit tests for testtaskZen::setSearchParamsForCases() method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../test/lib/testtaskzen.unittest.class.php | 49 ++++++++ .../test/zen/setsearchparamsforcases.php | 111 ++++++++++++++++++ 2 files changed, 160 insertions(+) create mode 100755 module/testtask/test/zen/setsearchparamsforcases.php diff --git a/module/testtask/test/lib/testtaskzen.unittest.class.php b/module/testtask/test/lib/testtaskzen.unittest.class.php index ae0b07ade0..acddfca492 100644 --- a/module/testtask/test/lib/testtaskzen.unittest.class.php +++ b/module/testtask/test/lib/testtaskzen.unittest.class.php @@ -62,4 +62,53 @@ class testtaskZenTest return $result; } + + /** + * Test setSearchParamsForCases method. + * + * @param object $product + * @param int $moduleID + * @param object $testtask + * @param int $queryID + * @param string $tab + * @access public + * @return mixed + */ + public function setSearchParamsForCasesTest($product = null, $moduleID = 0, $testtask = null, $queryID = 0, $tab = 'qa') + { + global $app; + $originalTab = $app->tab; + $app->tab = $tab; + + // 创建默认产品对象 + if(!$product) + { + $product = new stdclass(); + $product->id = 1; + $product->name = 'Test Product'; + $product->shadow = 0; + $product->type = 'normal'; + } + + // 创建默认测试单对象 + if(!$testtask) + { + $testtask = new stdclass(); + $testtask->id = 1; + $testtask->project = 1; + $testtask->execution = 1; + } + + try { + $method = $this->testtaskZenTest->getMethod('setSearchParamsForCases'); + $method->setAccessible(true); + + $result = $method->invokeArgs($this->testtaskZenTest->newInstance(), array($product, (int)$moduleID, $testtask, (int)$queryID)); + if(dao::isError()) return dao::getError(); + + return $result; + } finally { + $app->tab = $originalTab; + } + } } \ No newline at end of file diff --git a/module/testtask/test/zen/setsearchparamsforcases.php b/module/testtask/test/zen/setsearchparamsforcases.php new file mode 100755 index 0000000000..c4f59769e6 --- /dev/null +++ b/module/testtask/test/zen/setsearchparamsforcases.php @@ -0,0 +1,111 @@ +#!/usr/bin/env php +id->range('1-5'); +$product->name->range('产品1,产品2,产品3,影子产品,多分支产品'); +$product->type->range('normal{3},normal,branch'); +$product->shadow->range('0{4},1'); +$product->gen(5); + +$testtask = zenData('testtask'); +$testtask->id->range('1-3'); +$testtask->name->range('测试单1,测试单2,测试单3'); +$testtask->project->range('1-3'); +$testtask->execution->range('1-3'); +$testtask->gen(3); + +$module = zenData('module'); +$module->id->range('1-10'); +$module->root->range('1-5'); +$module->name->range('模块1,模块2,模块3,模块4,模块5,模块6,模块7,模块8,模块9,模块10'); +$module->type->range('case{10}'); +$module->gen(10); + +$story = zenData('story'); +$story->id->range('1-10'); +$story->title->range('需求1,需求2,需求3,需求4,需求5,需求6,需求7,需求8,需求9,需求10'); +$story->product->range('1-5'); +$story->status->range('active{10}'); +$story->gen(10); + +// 3. 用户登录(选择合适角色) +su('admin'); + +// 4. 创建测试实例(变量名与模块名一致) +$testtaskTest = new testtaskZenTest(); + +// 5. 🔴 强制要求:必须包含至少5个测试步骤 +$result1 = $testtaskTest->setSearchParamsForCasesTest(); +r(!dao::isError()) && p() && e('1'); // 步骤1:qa应用下正常产品和测试单设置搜索参数 + +// 构建project应用下的测试对象 +$product2 = new stdclass(); +$product2->id = 2; +$product2->name = '产品2'; +$product2->shadow = 0; +$product2->type = 'normal'; +$testtask2 = new stdclass(); +$testtask2->id = 2; +$testtask2->project = 2; +$testtask2->execution = 2; +$result2 = $testtaskTest->setSearchParamsForCasesTest($product2, 1, $testtask2, 0, 'project'); +r(!dao::isError()) && p() && e('1'); // 步骤2:project应用下设置搜索参数 + +// 构建execution应用下的测试对象 +$product3 = new stdclass(); +$product3->id = 3; +$product3->name = '产品3'; +$product3->shadow = 0; +$product3->type = 'normal'; +$testtask3 = new stdclass(); +$testtask3->id = 3; +$testtask3->project = 3; +$testtask3->execution = 3; +$result3 = $testtaskTest->setSearchParamsForCasesTest($product3, 2, $testtask3, 0, 'execution'); +r(!dao::isError()) && p() && e('1'); // 步骤3:execution应用下设置搜索参数 + +// 构建影子产品测试对象 +$shadowProduct = new stdclass(); +$shadowProduct->id = 4; +$shadowProduct->name = '影子产品'; +$shadowProduct->shadow = 1; +$shadowProduct->type = 'normal'; +$testtask4 = new stdclass(); +$testtask4->id = 1; +$testtask4->project = 1; +$testtask4->execution = 1; +$result4 = $testtaskTest->setSearchParamsForCasesTest($shadowProduct, 0, $testtask4, 0); +r(!dao::isError()) && p() && e('1'); // 步骤4:影子产品设置搜索参数 + +// 构建多分支产品测试对象 +$branchProduct = new stdclass(); +$branchProduct->id = 5; +$branchProduct->name = '多分支产品'; +$branchProduct->shadow = 0; +$branchProduct->type = 'branch'; +$testtask5 = new stdclass(); +$testtask5->id = 1; +$testtask5->project = 1; +$testtask5->execution = 1; +$result5 = $testtaskTest->setSearchParamsForCasesTest($branchProduct, 3, $testtask5, 1); +r(!dao::isError()) && p() && e('1'); // 步骤5:多分支产品设置搜索参数 \ No newline at end of file