From 880fcecb484dc3ff46ece4f9b7c0e5dbb62b648b Mon Sep 17 00:00:00 2001 From: liugang Date: Wed, 10 Sep 2025 10:59:54 +0800 Subject: [PATCH] + [misc] Add unit tests for testtaskModel::importRunOfUnitResult() 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 | 37 +++++++++++++++ .../test/model/importrunofunitresult.php | 46 +++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100755 module/testtask/test/model/importrunofunitresult.php diff --git a/module/testtask/test/lib/testtask.unittest.class.php b/module/testtask/test/lib/testtask.unittest.class.php index af455a725d..dc19dced8b 100644 --- a/module/testtask/test/lib/testtask.unittest.class.php +++ b/module/testtask/test/lib/testtask.unittest.class.php @@ -847,4 +847,41 @@ class testtaskTest $tester->config->global->flow = $oldConfig; } } + + /** + * Test importRunOfUnitResult method. + * + * @param object $case + * @param int $caseID + * @param object $testRun + * @access public + * @return mixed + */ + public function importRunOfUnitResultTest(object $case, int $caseID, object $testRun) + { + // 确保case对象包含必需的属性 + if(!isset($case->version)) $case->version = 1; + if(!isset($case->lastRunner)) $case->lastRunner = ''; + if(!isset($case->lastRunDate)) $case->lastRunDate = ''; + if(!isset($case->lastRunResult)) $case->lastRunResult = ''; + + $reflection = new ReflectionClass($this->objectModel); + $method = $reflection->getMethod('importRunOfUnitResult'); + $method->setAccessible(true); + + try { + $result = $method->invokeArgs($this->objectModel, [$case, $caseID, $testRun]); + if(dao::isError()) { + $errors = dao::getError(); + return 'dao_error: ' . (is_array($errors) ? implode(', ', $errors) : $errors); + } + + // 返回插入成功的标志,而不是具体的ID + return $result > 0 ? 'success' : 'failed'; + } catch(Exception $e) { + return 'exception: ' . $e->getMessage(); + } catch(Error $e) { + return 'error: ' . $e->getMessage(); + } + } } diff --git a/module/testtask/test/model/importrunofunitresult.php b/module/testtask/test/model/importrunofunitresult.php new file mode 100755 index 0000000000..d7c1f1a5a0 --- /dev/null +++ b/module/testtask/test/model/importrunofunitresult.php @@ -0,0 +1,46 @@ +#!/usr/bin/env php +id->range('1-10'); +$testrun->task->range('1-5'); +$testrun->case->range('1-20'); +$testrun->version->range('1-3'); +$testrun->assignedTo->range('admin,user1,user2,test3,dev4'); +$testrun->lastRunner->range('admin,user1,user2'); +$testrun->lastRunDate->range('`2024-01-01 10:00:00`,`2024-01-02 11:00:00`,`2024-01-03 12:00:00`'); +$testrun->lastRunResult->range('pass,fail,blocked'); +$testrun->status->range('normal,wait,done'); +$testrun->gen(5); + +// 3. 用户登录(选择合适角色) +su('admin'); + +// 4. 创建测试实例(变量名与模块名一致) +$testtaskTest = new testtaskTest(); + +// 5. 🔴 强制要求:必须包含至少5个测试步骤 +r($testtaskTest->importRunOfUnitResultTest((object)array('version' => 2, 'lastRunner' => 'testuser', 'lastRunDate' => '2024-01-01 15:00:00', 'lastRunResult' => 'pass'), 101, (object)array('task' => 6, 'status' => 'normal'))) && p() && e('success'); // 步骤1:正常导入测试运行数据 +r($testtaskTest->importRunOfUnitResultTest((object)array('version' => 1, 'lastRunner' => 'testuser2', 'lastRunDate' => '2024-01-02 15:00:00', 'lastRunResult' => 'pass'), 102, (object)array('task' => 7, 'status' => 'normal'))) && p() && e('success'); // 步骤2:测试不同参数的测试运行数据 +r($testtaskTest->importRunOfUnitResultTest((object)array('version' => 1, 'lastRunner' => 'admin', 'lastRunDate' => '2024-01-02 10:00:00', 'lastRunResult' => 'fail'), 0, (object)array('task' => 8, 'status' => 'wait'))) && p() && e('success'); // 步骤3:测试最小caseID为0 +r($testtaskTest->importRunOfUnitResultTest((object)array('version' => 3, 'lastRunner' => 'testuser4', 'lastRunDate' => '2024-01-04 15:00:00', 'lastRunResult' => 'blocked'), 103, (object)array('task' => 9, 'status' => 'normal'))) && p() && e('success'); // 步骤4:测试不同版本的测试运行数据 +r($testtaskTest->importRunOfUnitResultTest((object)array('version' => 1, 'lastRunner' => 'developer', 'lastRunDate' => '2024-01-03 14:30:00', 'lastRunResult' => 'blocked'), 104, (object)array('task' => 10, 'status' => 'done', 'assignedTo' => 'tester'))) && p() && e('success'); // 步骤5:测试完整的测试运行数据导入 \ No newline at end of file