#!/usr/bin/env php
id->range('1-10');
$caseTable->product->range('1');
$caseTable->module->range('0');
$caseTable->story->range('1,2,3,4,5');
$caseTable->title->range('测试用例1,测试用例2,测试用例3,测试用例4,测试用例5');
$caseTable->version->range('1');
$caseTable->status->range('normal,wait');
$caseTable->lastEditedDate->range('`2023-09-01 10:00:00`');
$caseTable->storyVersion->range('1');
$caseTable->auto->range('no,auto');
$caseTable->script->range('[]');
$caseTable->gen(10);
$stepTable = zenData('casestep');
$stepTable->id->range('1-20');
$stepTable->case->range('1-10');
$stepTable->version->range('1');
$stepTable->desc->range('步骤描述1,步骤描述2,步骤描述3');
$stepTable->expect->range('期望结果1,期望结果2,期望结果3');
$stepTable->type->range('step,group,item');
$stepTable->gen(20);
$storyTable = zenData('story');
$storyTable->id->range('1-10');
$storyTable->product->range('1');
$storyTable->title->range('需求1,需求2,需求3,需求4,需求5');
$storyTable->version->range('1,2,3,4,5');
$storyTable->gen(10);
// 3. 用户登录
su('admin');
// 4. 创建测试实例
$testcaseTest = new testcaseZenTest();
// 5. 准备测试数据
$oldCase = new stdClass();
$oldCase->id = 1;
$oldCase->product = 1;
$oldCase->module = 0;
$oldCase->story = 1;
$oldCase->title = '测试用例标题1';
$oldCase->version = 1;
$oldCase->status = 'normal';
$oldCase->lastEditedDate = '2023-09-01 10:00:00';
$oldCase->storyVersion = 1;
$oldCase->script = '';
$oldCase->lib = 0;
// 设置oldCase的steps属性(getStatusForUpdate需要)
$step1 = new stdClass();
$step1->desc = '步骤1';
$step1->expect = '期望1';
$step1->type = 'step';
$step2 = new stdClass();
$step2->desc = '步骤2';
$step2->expect = '期望2';
$step2->type = 'step';
$step3 = new stdClass();
$step3->desc = '步骤3';
$step3->expect = '期望3';
$step3->type = 'step';
$oldCase->steps = array($step1, $step2, $step3);
// 6. 测试步骤
// 步骤1:正常情况 - 有效的steps和expects数据
$formData1 = array(
'steps' => array('步骤1', '步骤2', '步骤3'),
'expects' => array('期望1', '期望2', '期望3'),
'title' => '测试用例标题1',
'story' => 1,
'auto' => 'no',
'linkCase' => '',
'script' => '',
'branch' => 0,
'module' => 0,
'product' => 1,
'stage' => array()
);
$postData1 = array(
'steps' => array('步骤1', '步骤2', '步骤3'),
'expects' => array('期望1', '期望2', '期望3'),
'stepType' => array('step', 'step', 'step'),
'lastEditedDate' => '2023-09-01 10:00:00'
);
r($testcaseTest->prepareEditExtrasTest($formData1, $oldCase, $postData1)) && p('id,version,lastEditedBy') && e('1,1,admin');
// 步骤2:边界情况 - expect存在但对应的step为空
$formData2 = array(
'steps' => array('步骤1', '', '步骤3'),
'expects' => array('期望1', '期望2', '期望3'),
'title' => '测试用例标题1',
'story' => 1,
'auto' => 'no',
'linkCase' => '',
'script' => '',
'branch' => 0,
'module' => 0,
'product' => 1,
'stage' => array()
);
$postData2 = array(
'steps' => array('步骤1', '', '步骤3'),
'expects' => array('期望1', '期望2', '期望3'),
'stepType' => array('step', 'step', 'step'),
'lastEditedDate' => '2023-09-01 10:00:00'
);
r($testcaseTest->prepareEditExtrasTest($formData2, $oldCase, $postData2)) && p('message:0') && e('步骤1不能为空');
// 步骤3:步骤变更情况 - 修改step内容导致版本号+1
$formData3 = array(
'steps' => array('修改后的步骤1', '步骤2', '步骤3'),
'expects' => array('期望1', '期望2', '期望3'),
'title' => '测试用例标题1',
'story' => 1,
'auto' => 'no',
'linkCase' => '',
'script' => '',
'branch' => 0,
'module' => 0,
'product' => 1,
'stage' => array()
);
$postData3 = array(
'steps' => array('修改后的步骤1', '步骤2', '步骤3'),
'expects' => array('期望1', '期望2', '期望3'),
'stepType' => array('step', 'step', 'step'),
'lastEditedDate' => '2023-09-01 10:00:00'
);
r($testcaseTest->prepareEditExtrasTest($formData3, $oldCase, $postData3)) && p('version') && e('2');
// 步骤4:story变更 - story ID改变时storyVersion应更新
$formData4 = array(
'steps' => array('步骤1', '步骤2'),
'expects' => array('期望1', '期望2'),
'title' => '测试用例标题1',
'story' => 2,
'auto' => 'no',
'linkCase' => '',
'script' => '',
'branch' => 0,
'module' => 0,
'product' => 1,
'stage' => array()
);
$postData4 = array(
'steps' => array('步骤1', '步骤2'),
'expects' => array('期望1', '期望2'),
'stepType' => array('step', 'step'),
'lastEditedDate' => '2023-09-01 10:00:00'
);
r($testcaseTest->prepareEditExtrasTest($formData4, $oldCase, $postData4)) && p('storyVersion') && e('2');
// 步骤5:auto为auto且有script时进行HTML实体转义
$oldCase5 = clone $oldCase;
$oldCase5->script = '';
$formData5 = array(
'steps' => array('步骤1', '步骤2'),
'expects' => array('期望1', '期望2'),
'title' => '测试用例标题1',
'story' => 1,
'auto' => 'auto',
'script' => '',
'linkCase' => '',
'branch' => 0,
'module' => 0,
'product' => 1,
'stage' => array()
);
$postData5 = array(
'steps' => array('步骤1', '步骤2'),
'expects' => array('期望1', '期望2'),
'stepType' => array('step', 'step'),
'lastEditedDate' => '2023-09-01 10:00:00'
);
r($testcaseTest->prepareEditExtrasTest($formData5, $oldCase5, $postData5)) && p('script') && e('<script>alert("test")</script>');