diff --git a/module/testcase/test/lib/testcase.unittest.class.php b/module/testcase/test/lib/testcase.unittest.class.php index 226e47e3a5..8900b503d8 100755 --- a/module/testcase/test/lib/testcase.unittest.class.php +++ b/module/testcase/test/lib/testcase.unittest.class.php @@ -3670,4 +3670,58 @@ class testcaseTest return $stepChanged; } + + /** + * Test checkCreateFormData method. + * + * @param object $case + * @access public + * @return bool|array + */ + public function checkCreateFormDataTest(object $case): bool|array + { + global $tester; + $zen = $tester->loadZen('testcase'); + + // 清除之前的错误 + dao::$errors = array(); + + // 使用反射调用protected方法 + $reflection = new ReflectionClass($zen); + $method = $reflection->getMethod('checkCreateFormData'); + $method->setAccessible(true); + + $result = $method->invoke($zen, $case); + + if(dao::isError()) return dao::getError(); + + return $result; + } + + /** + * Test checkCasesForBatchEdit method. + * + * @param array $cases + * @access public + * @return array + */ + public function checkCasesForBatchEditTest(array $cases): array + { + global $tester; + $zen = $tester->loadZen('testcase'); + + // 清除之前的错误 + dao::$errors = array(); + + // 使用反射调用protected方法 + $reflection = new ReflectionClass($zen); + $method = $reflection->getMethod('checkCasesForBatchEdit'); + $method->setAccessible(true); + + $result = $method->invoke($zen, $cases); + + if(dao::isError()) return dao::getError(); + + return $result; + } } diff --git a/module/testcase/test/lib/testcasezen.unittest.class.php b/module/testcase/test/lib/testcasezen.unittest.class.php index 0c9fb2eb0c..8885e97828 100755 --- a/module/testcase/test/lib/testcasezen.unittest.class.php +++ b/module/testcase/test/lib/testcasezen.unittest.class.php @@ -879,4 +879,26 @@ class testcaseZenTest return array('error' => $e->getMessage()); } } + + /** + * Test checkCasesForBatchEdit method. + * + * @param array $cases + * @access public + * @return array + */ + public function checkCasesForBatchEditTest(array $cases): array + { + try { + $result = callZenMethod('testcase', 'checkCasesForBatchEdit', [$cases]); + + if(dao::isError()) return dao::getError(); + + return $result; + } catch (Exception $e) { + return array('error' => $e->getMessage()); + } catch (Error $e) { + return array('error' => $e->getMessage()); + } + } } diff --git a/module/testcase/test/zen/checkcasesforbatchedit.php b/module/testcase/test/zen/checkcasesforbatchedit.php new file mode 100755 index 0000000000..d2d84400da --- /dev/null +++ b/module/testcase/test/zen/checkcasesforbatchedit.php @@ -0,0 +1,64 @@ +#!/usr/bin/env php + 1, 'title' => '测试用例1', 'type' => 'feature'), + (object)array('id' => 2, 'title' => '测试用例2', 'type' => 'interface') +); +r($testcaseTest->checkCasesForBatchEditTest($validCases)) && p('0:title') && e('测试用例1'); + +// 步骤2:边界值 - title字段为空 +$casesWithEmptyTitle = array( + (object)array('id' => 1, 'title' => '', 'type' => 'feature'), + (object)array('id' => 2, 'title' => '测试用例2', 'type' => 'interface') +); +r($testcaseTest->checkCasesForBatchEditTest($casesWithEmptyTitle)) && p('title[0]') && e('『用例名称』不能为空。'); + +// 步骤3:异常输入 - type字段为空 +$casesWithEmptyType = array( + (object)array('id' => 1, 'title' => '测试用例1', 'type' => ''), + (object)array('id' => 2, 'title' => '测试用例2', 'type' => 'interface') +); +r($testcaseTest->checkCasesForBatchEditTest($casesWithEmptyType)) && p('type[0]') && e('『用例类型』不能为空。'); + +// 步骤4:权限验证 - 多个必填字段为空 +$casesWithMultipleEmpty = array( + (object)array('id' => 1, 'title' => '', 'type' => ''), + (object)array('id' => 2, 'title' => '测试用例2', 'type' => 'interface') +); +r($testcaseTest->checkCasesForBatchEditTest($casesWithMultipleEmpty)) && p('title[0],type[0]') && e('『用例名称』不能为空。,『用例类型』不能为空。'); + +// 步骤5:业务规则 - 数组类型字段验证(stage字段) +$casesWithEmptyStage = array( + (object)array('id' => 1, 'title' => '测试用例1', 'type' => 'feature', 'stage' => ''), +); +r($testcaseTest->checkCasesForBatchEditTest($casesWithEmptyStage)) && p('0:title') && e('测试用例1'); \ No newline at end of file