From 4b773d2bdbf47645a5277ef4f6f1ce19be3aa250 Mon Sep 17 00:00:00 2001 From: liugang Date: Wed, 10 Sep 2025 11:16:46 +0800 Subject: [PATCH] + [misc] Add unit tests for testtaskModel::getExistCasesOfUnitResult() 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/testtask.unittest.class.php | 22 ++++++ .../test/model/getexistcasesofunitresult.php | 71 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100755 module/testtask/test/model/getexistcasesofunitresult.php diff --git a/module/testtask/test/lib/testtask.unittest.class.php b/module/testtask/test/lib/testtask.unittest.class.php index f8c8f11147..8005988b8e 100644 --- a/module/testtask/test/lib/testtask.unittest.class.php +++ b/module/testtask/test/lib/testtask.unittest.class.php @@ -934,4 +934,26 @@ class testtaskTest return $result; } + + /** + * Test getExistCasesOfUnitResult method. + * + * @param array $titles + * @param int $suiteID + * @param int $productID + * @param string $auto + * @access public + * @return array + */ + public function getExistCasesOfUnitResultTest(array $titles, int $suiteID, int $productID, string $auto): array + { + $reflection = new ReflectionClass($this->objectModel); + $method = $reflection->getMethod('getExistCasesOfUnitResult'); + $method->setAccessible(true); + + $result = $method->invokeArgs($this->objectModel, [$titles, $suiteID, $productID, $auto]); + if(dao::isError()) return dao::getError(); + + return $result; + } } diff --git a/module/testtask/test/model/getexistcasesofunitresult.php b/module/testtask/test/model/getexistcasesofunitresult.php new file mode 100755 index 0000000000..9c0a74b4ca --- /dev/null +++ b/module/testtask/test/model/getexistcasesofunitresult.php @@ -0,0 +1,71 @@ +#!/usr/bin/env php +id->range('1-20'); +$table->product->range('1{8},2{6},3{6}'); +$table->module->range('1-10{2}'); +$table->title->range('UnitCase1,UnitCase2,UnitCase3,AutoCase1,AutoCase2,ManualCase1,ManualCase2,DeletedCase,TestCase1,TestCase2,TestCase3,TestCase4,TestCase5,TestCase6,TestCase7,TestCase8,TestCase9,TestCase10,TestCase11,TestCase12'); +$table->type->range('unit{8},feature{6},auto{6}'); +$table->auto->range('unit{8},no{6},auto{6}'); +$table->pri->range('1{5},2{5},3{5},4{5}'); +$table->status->range('normal{18},blocked{2}'); +$table->stage->range('unittest{8},feature{6},system{6}'); +$table->story->range('1-10{2}'); +$table->precondition->range('前置条件描述{20}'); +$table->keywords->range('关键词1,关键词2,关键词3'); +$table->openedBy->range('admin{8},user1{6},user2{6}'); +$table->openedDate->range('`2023-01-01 00:00:00`,`2023-02-01 00:00:00`,`2023-03-01 00:00:00`,`2023-04-01 00:00:00`,`2023-05-01 00:00:00`'); +$table->lastEditedBy->range('admin{8},user1{6},user2{6}'); +$table->lastEditedDate->range('`2023-01-01 00:00:00`,`2023-02-01 00:00:00`,`2023-03-01 00:00:00`,`2023-04-01 00:00:00`,`2023-05-01 00:00:00`'); +$table->version->range('1{20}'); +$table->deleted->range('0{18},1{2}'); +$table->gen(20); + +// 套件用例关联表数据 +$suiteTable = zenData('suitecase'); +$suiteTable->suite->range('1{5},2{5},3{5}'); +$suiteTable->product->range('1{8},2{4},3{3}'); +$suiteTable->case->range('1-15'); +$suiteTable->version->range('1{15}'); +$suiteTable->gen(15); + +// 3. 用户登录(选择合适角色) +su('admin'); + +// 4. 创建测试实例(变量名与模块名一致) +$testtaskTest = new testtaskTest(); + +// 5. 强制要求:必须包含至少5个测试步骤 +r($testtaskTest->getExistCasesOfUnitResultTest(['UnitCase1', 'UnitCase2'], 1, 1, 'unit')) && p('UnitCase1,UnitCase2') && e('1,2'); // 步骤1:正常情况查找已存在用例 +r($testtaskTest->getExistCasesOfUnitResultTest([], 1, 1, 'unit')) && p() && e('0'); // 步骤2:空数组输入 +r($testtaskTest->getExistCasesOfUnitResultTest(['NonExistCase'], 1, 1, 'unit')) && p() && e('0'); // 步骤3:不存在的用例标题 +r($testtaskTest->getExistCasesOfUnitResultTest(['UnitCase1', 'NonExistCase'], 1, 1, 'unit')) && p('UnitCase1') && e('1'); // 步骤4:部分标题存在 +r($testtaskTest->getExistCasesOfUnitResultTest(['UnitCase3'], 2, 1, 'unit')) && p('UnitCase3') && e('3'); // 步骤5:套件ID筛选,返回找到的用例 +r($testtaskTest->getExistCasesOfUnitResultTest(['ManualCase1'], 0, 2, 'no')) && p() && e('0'); // 步骤6:产品ID筛选,但类型不匹配 +r($testtaskTest->getExistCasesOfUnitResultTest(['UnitCase1', 'UnitCase3'], 0, 1, 'unit')) && p('UnitCase1,UnitCase3') && e('1,3'); // 步骤7:auto类型筛选测试 \ No newline at end of file