From d257043768e9aa84b60ac67017c366f4397830a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E5=AE=87=E7=90=A6?= <465615774@qq.com> Date: Sat, 7 Mar 2020 19:41:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=A8=E4=BE=8B=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E7=9B=B8=E5=85=B3=E7=9A=84=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CaseTemplet/AddInformation.xml | 488 +++++++++++++----- .../CaseTemplet/BrowseList.xml | 20 +- .../CaseConfigurationFile/CaseTemplet/Map.xml | 10 +- .../CaseTemplet/Username.xml | 18 +- .../CaseTemplet/Video.xml | 12 +- .../{ => FileTemplet}/CaseTemplet.xml | 0 .../jira测试用例导入模板.xml | 0 .../auxiliary/work/n/tcase/AbstractCase.java | 5 - .../pres/auxiliary/work/n/tcase/Case.java | 233 +++++++++ .../auxiliary/work/n/tcase/DataListCase.java | 15 + .../work/n/tcase/InformationCase.java | 27 + .../auxiliary/work/n/tcase/WriteTestCase.java | 19 +- 12 files changed, 667 insertions(+), 180 deletions(-) rename ConfigurationFiles/CaseConfigurationFile/{ => FileTemplet}/CaseTemplet.xml (100%) rename ConfigurationFiles/{NewCaseConfigurationFile => CaseConfigurationFile/FileTemplet}/jira测试用例导入模板.xml (100%) delete mode 100644 src/main/java/pres/auxiliary/work/n/tcase/AbstractCase.java create mode 100644 src/main/java/pres/auxiliary/work/n/tcase/Case.java create mode 100644 src/main/java/pres/auxiliary/work/n/tcase/DataListCase.java create mode 100644 src/main/java/pres/auxiliary/work/n/tcase/InformationCase.java diff --git a/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/AddInformation.xml b/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/AddInformation.xml index ccd1782..803d5af 100644 --- a/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/AddInformation.xml +++ b/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/AddInformation.xml @@ -1,186 +1,406 @@ - - - + + + - - - - - - - - - - - - + + + + + + + + + + + + - - + + + + + + + </titles> + <preconditions> + <precondition id='1' value='已在新增*{信息}*的页面上' /> + <precondition id='2' value='除*{控件名称}*外,其他信息均正确填写' /> + </preconditions> + <ranks> + <rank id='1' value='1' /> + <rank id='2' value='2' /> + <rank id='3' value='3' /> + </ranks> + <keys> + <key id='1' value='*{控件名称}*、*{信息}*、新增' /> + </keys> </case> - <case function="addSelectboxCase"> + <case name='addSelectboxCase'> <steps> - <step id="1" value="ѡѡѡ*{buttonName}*ť"/> - <step id="2" value="ѡѡеĵһ*{buttonName}*ť"/> - <step id="3" value="ѡѡеһ*{buttonName}*ť"/> + <step id='1' value='不进行选择或选择空选项,点击“*{按钮名称}*”按钮'/> + <step id='2' value='选择选项中的第一项,点击“*{按钮名称}*”按钮'/> + <step id='3' value='选择选项中的最后一项,点击“*{按钮名称}*”按钮'/> </steps> - <expectationss> - </expectationss> + <excepts> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> + </excepts> + <titles> + <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + </titles> + <preconditions> + <precondition id='1' value='已在新增*{信息}*的页面上' /> + <precondition id='2' value='除*{控件名称}*外,其他信息均正确填写' /> + </preconditions> + <ranks> + <rank id='1' value='1' /> + <rank id='2' value='2' /> + <rank id='3' value='3' /> + </ranks> + <keys> + <key id='1' value='*{控件名称}*、*{信息}*、新增' /> + </keys> </case> - <case function="addRadioButtonCase"> + <case name='addRadioButtonCase'> <steps> - <step id="1" value="ӵһѡʼеѡε"/> - <step id="2" value="ѡ񣬵*{buttonName}*ť"/> - <step id="3" value="ѡѡеĵһ*{buttonName}*ť"/> - <step id="4" value="ѡѡеһ*{buttonName}*ť"/> + <step id='1' value='从第一个选项开始,将所有的选项依次点击'/> + <step id='2' value='不进行选择,点击“*{按钮名称}*”按钮'/> + <step id='3' value='选择选项中的第一项,点击“*{按钮名称}*”按钮'/> + <step id='4' value='选择选项中的最后一项,点击“*{按钮名称}*”按钮'/> </steps> - <expectations> - <expectation id="1" value="ϵѡѡе"/> - </expectations> + <excepts> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> + <except id='3' value='不会出现有两个或以上的选项被选中的情况'/> + </excepts> + <titles> + <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + </titles> + <preconditions> + <precondition id='1' value='已在新增*{信息}*的页面上' /> + <precondition id='2' value='除*{控件名称}*外,其他信息均正确填写' /> + </preconditions> + <ranks> + <rank id='1' value='1' /> + <rank id='2' value='2' /> + <rank id='3' value='3' /> + </ranks> + <keys> + <key id='1' value='*{控件名称}*、*{信息}*、新增' /> + </keys> </case> - <case function="addCheckboxCase"> + <case name='addCheckboxCase'> <steps> - <step id="1" value="ӵһѡʼεеѡ"/> - <step id="2" value="ٴεеѡ"/> - <step id="3" value="ѡ񣬵*{buttonName}*ť"/> - <step id="4" value="ѡѡеĵһ*{buttonName}*ť"/> - <step id="5" value="ѡѡеһ*{buttonName}*ť"/> - <step id="6" value="ѡжѡ*{buttonName}*ť"/> + <step id='1' value='从第一个选项开始,依次点击所有的选项'/> + <step id='2' value='再次依次点击所有的选项'/> + <step id='3' value='不进行选择,点击“*{按钮名称}*”按钮'/> + <step id='4' value='选择选项中的第一项,点击“*{按钮名称}*”按钮'/> + <step id='5' value='选择选项中的最后一项,点击“*{按钮名称}*”按钮'/> + <step id='6' value='选择其中多个选项,点击“*{按钮名称}*”按钮'/> </steps> - <expectations> - <expectation id="1" value="еѡѡ"/> - <expectation id="2" value="еѡȡѡ"/> - </expectations> + <excepts> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> + <except id='3' value='所有的选项均被勾选'/> + <except id='4' value='所有的选项均被取消勾选'/> + </excepts> + <titles> + <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + </titles> + <preconditions> + <precondition id='1' value='已在新增*{信息}*的页面上' /> + <precondition id='2' value='除*{控件名称}*外,其他信息均正确填写' /> + </preconditions> + <ranks> + <rank id='1' value='1' /> + <rank id='2' value='2' /> + <rank id='3' value='3' /> + </ranks> + <keys> + <key id='1' value='*{控件名称}*、*{信息}*、新增' /> + </keys> </case> - <case function="addDateCase"> + <case name='addDateCase'> <steps> - <step id="1" value="ѡʱ䣬*{buttonName}*ť"/> - <step id="2" value="ѡǰʱ䣬*{buttonName}*ť"/> - <step id="3" value="ѡʱʱ䣬*{buttonName}*ť"/> - <step id="4" value="ֶȷʽڣ*{buttonName}*ť"/> - <step id="5" value="ֶȷʽڣ*{buttonName}*ť"/> + <step id='1' value='不选择时间,点击“*{按钮名称}*”按钮'/> + <step id='2' value='选择当前的时间,点击“*{按钮名称}*”按钮'/> + <step id='3' value='选择时间后清空时间,点击“*{按钮名称}*”按钮'/> + <step id='4' value='手动输入正确格式的日期,点击“*{按钮名称}*”按钮'/> + <step id='5' value='手动输入非正确格式的日期,点击“*{按钮名称}*”按钮'/> </steps> - <expectations> - </expectations> + <excepts> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> + </excepts> + <titles> + <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + </titles> + <preconditions> + <precondition id='1' value='已在新增*{信息}*的页面上' /> + <precondition id='2' value='除*{控件名称}*外,其他信息均正确填写' /> + </preconditions> + <ranks> + <rank id='1' value='1' /> + <rank id='2' value='2' /> + <rank id='3' value='3' /> + </ranks> + <keys> + <key id='1' value='*{控件名称}*、*{信息}*、新增' /> + </keys> </case> - <case function="addStartDateCase"> + <case name='addStartDateCase'> <steps> - <step id="1" value="ѡʱ䣬*{buttonName}*ť"/> - <step id="2" value="ѡǰʱ䣬*{buttonName}*ť"/> - <step id="3" value="ѡʱʱ䣬*{buttonName}*ť"/> - <step id="4" value="ֶȷʽڣ*{buttonName}*ť"/> - <step id="5" value="ֶȷʽڣ*{buttonName}*ť"/> - <step id="6" value="ѡ*{endDateName}*ڣ*{buttonName}*ť"/> - <step id="7" value="ѡ*{endDateName}*ڣ*{buttonName}*ť"/> + <step id='1' value='不选择时间,点击“*{按钮名称}*”按钮'/> + <step id='2' value='选择当前的时间,点击“*{按钮名称}*”按钮'/> + <step id='3' value='选择时间后清空时间,点击“*{按钮名称}*”按钮'/> + <step id='4' value='手动输入正确格式的日期,点击“*{按钮名称}*”按钮'/> + <step id='5' value='手动输入非正确格式的日期,点击“*{按钮名称}*”按钮'/> + <step id='6' value='输入或选择大于*{结束日期}*的日期,点击“*{按钮名称}*”按钮'/> + <step id='7' value='选择大于*{结束日期}*的日期,点击“*{按钮名称}*”按钮'/> </steps> - <expectations> - </expectations> + <excepts> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> + </excepts> + <titles> + <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + </titles> + <preconditions> + <precondition id='1' value='已在新增*{信息}*的页面上' /> + <precondition id='2' value='除*{控件名称}*外,其他信息均正确填写' /> + </preconditions> + <ranks> + <rank id='1' value='1' /> + <rank id='2' value='2' /> + <rank id='3' value='3' /> + </ranks> + <keys> + <key id='1' value='*{控件名称}*、*{信息}*、新增' /> + </keys> </case> - <case function="addEndDateCase"> + <case name='addEndDateCase'> <steps> - <step id="1" value="ѡʱ䣬*{buttonName}*ť"/> - <step id="2" value="ѡǰʱ䣬*{buttonName}*ť"/> - <step id="3" value="ѡʱʱ䣬*{buttonName}*ť"/> - <step id="4" value="ֶȷʽڣ*{buttonName}*ť"/> - <step id="5" value="ֶȷʽڣ*{buttonName}*ť"/> - <step id="6" value="ѡС*{startDateName}*ڣ*{buttonName}*ť"/> - <step id="7" value="ѡС*{startDateName}*ڣ*{buttonName}*ť"/> + <step id='1' value='不选择时间,点击“*{按钮名称}*”按钮'/> + <step id='2' value='选择当前的时间,点击“*{按钮名称}*”按钮'/> + <step id='3' value='选择时间后清空时间,点击“*{按钮名称}*”按钮'/> + <step id='4' value='手动输入正确格式的日期,点击“*{按钮名称}*”按钮'/> + <step id='5' value='手动输入非正确格式的日期,点击“*{按钮名称}*”按钮'/> + <step id='6' value='输入或选择小于*{开始日期}*的日期,点击“*{按钮名称}*”按钮'/> + <step id='7' value='选择小于*{开始日期}*的日期,点击“*{按钮名称}*”按钮'/> </steps> - <expectations> - </expectations> + <excepts> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> + </excepts> + <titles> + <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + </titles> + <preconditions> + <precondition id='1' value='已在新增*{信息}*的页面上' /> + <precondition id='2' value='除*{控件名称}*外,其他信息均正确填写' /> + </preconditions> + <ranks> + <rank id='1' value='1' /> + <rank id='2' value='2' /> + <rank id='3' value='3' /> + </ranks> + <keys> + <key id='1' value='*{控件名称}*、*{信息}*、新增' /> + </keys> </case> - <case function="addPhoneCase"> + <case name='addPhoneCase'> <steps> - <step id="1" value="룬*{buttonName}*ť"/> - <step id="2" value="ַ*{buttonName}*ť"/> - <step id="3" value="11λ֣*{buttonName}*ť"/> - <step id="4" value="С11λ֣*{buttonName}*ť"/> - <step id="5" value="7λ֣*{buttonName}*ť"/> - <step id="6" value="С7λ֣*{buttonName}*ť"/> - <step id="7" value="벻Ϲ򵫳ȷϹ֣*{buttonName}*ť"/> + <step id='1' value='不进行输入,点击“*{按钮名称}*”按钮'/> + <step id='2' value='输入非数字字符,点击“*{按钮名称}*”按钮'/> + <step id='3' value='输入大于11位的数字,点击“*{按钮名称}*”按钮'/> + <step id='4' value='输入小于11位的数字,点击“*{按钮名称}*”按钮'/> + <step id='5' value='输入大于7位的数字,点击“*{按钮名称}*”按钮'/> + <step id='6' value='输入小于7位的数字,点击“*{按钮名称}*”按钮'/> + <step id='7' value='输入不符合规则但长度符合规则的数字,点击“*{按钮名称}*”按钮'/> </steps> - <expectations> - </expectations> + <excepts> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> + </excepts> + <titles> + <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + </titles> + <preconditions> + <precondition id='1' value='已在新增*{信息}*的页面上' /> + <precondition id='2' value='除*{控件名称}*外,其他信息均正确填写' /> + </preconditions> + <ranks> + <rank id='1' value='1' /> + <rank id='2' value='2' /> + <rank id='3' value='3' /> + </ranks> + <keys> + <key id='1' value='*{控件名称}*、*{信息}*、新增' /> + </keys> </case> - <case function="addIDCardCase"> + <case name='addIDCardCase'> <steps> - <step id="1" value="룬*{buttonName}*ť"/> - <step id="2" value="ַ*{buttonName}*ť"/> - <step id="3" value="15λ֤Ϣ*{buttonName}*ť"/> - <step id="4" value="18λ֤Ϣ*{buttonName}*ť"/> - <step id="5" value="ĩβXx֤Ϣ*{buttonName}*ť"/> - <step id="6" value="18λ֣*{buttonName}*ť"/> - <step id="7" value="С18λ15λ֣*{buttonName}*ť"/> - <step id="8" value="С15λ֣*{buttonName}*ť"/> - <step id="9" value="벻֤򵫳ȷϹ֣123456789012345678*{buttonName}*ť"/> - <step id="10" value="ڵ֤Ϣ*{buttonName}*ť"/> + <step id='1' value='不进行输入,点击“*{按钮名称}*”按钮'/> + <step id='2' value='输入非数字字符,点击“*{按钮名称}*”按钮'/> + <step id='3' value='输入15位的证件信息,点击“*{按钮名称}*”按钮'/> + <step id='4' value='输入18位的证件信息,点击“*{按钮名称}*”按钮'/> + <step id='5' value='输入末尾带“X”或“x”的证件信息,点击“*{按钮名称}*”按钮'/> + <step id='6' value='输入大于18位的数字,点击“*{按钮名称}*”按钮'/> + <step id='7' value='输入小于18位但大于15位的数字,点击“*{按钮名称}*”按钮'/> + <step id='8' value='输入小于15位的数字,点击“*{按钮名称}*”按钮'/> + <step id='9' value='输入不符合证件规则但长度符合规则的数字(如123456789012345678),点击“*{按钮名称}*”按钮'/> + <step id='10' value='输入存在的证件信息,点击“*{按钮名称}*”按钮'/> </steps> - <expectations> - </expectations> + <excepts> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> + </excepts> + <titles> + <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + </titles> + <preconditions> + <precondition id='1' value='已在新增*{信息}*的页面上' /> + <precondition id='2' value='除*{控件名称}*外,其他信息均正确填写' /> + </preconditions> + <ranks> + <rank id='1' value='1' /> + <rank id='2' value='2' /> + <rank id='3' value='3' /> + </ranks> + <keys> + <key id='1' value='*{控件名称}*、*{信息}*、新增' /> + </keys> </case> - <case function="addUploadImageCase"> + <case name='addUploadImageCase'> <steps> - <step id="1" value="*{text}*ͼƬ*{buttonName}*ť"/> - <step id="2" value="ϴͼƬͼƬ"/> - <step id="3" value="*{text}*ͼƬɾͼƬ*{text}*ͼƬ*{buttonName}*ť"/> - <step id="4" value="*{text}*ͬһͼƬ*{buttonName}*ť"/> - <step id="5" value="պȡ"/> - <step id="6" value="*{text}*ƴСͼƬ*{buttonName}*ť"/> - <step id="7" value="*{text}*ϴͼƬ糬3MͼƬ*{buttonName}*ť"/> - <step id="8" value="ϴ*{fileGroup}*ʽļ*{buttonName}*ť"/> - <step id="9" value="*{text}*ϴͼƬʽļ*{buttonName}*ť"/> - <step id="10" value="*{text}*С*{fileMin}**{s}**{mode}**{buttonName}*ť"/> - <step id="11" value="*{text}**{fileMin}**{s}**{mode}**{buttonName}*ť"/> - <step id="12" value="*{text}**{fileMax}**{s}**{mode}**{buttonName}*ť"/> - <step id="13" value="*{text}**{fileMax}**{s}**{mode}**{buttonName}*ť"/> + <step id='1' value='不*{操作名称}*图片,点击“*{按钮名称}*”按钮'/> + <step id='2' value='上传图片后点击图片'/> + <step id='3' value='*{操作名称}*图片后删除图片再*{操作名称}*图片,点击“*{按钮名称}*”按钮'/> + <step id='4' value='*{操作名称}*同一张图片,点击“*{按钮名称}*”按钮'/> + <step id='5' value='拍照后再取消拍照'/> + <step id='6' value='*{操作名称}*超过限制大小的图片,点击“*{按钮名称}*”按钮'/> + <step id='7' value='*{操作名称}*较大的图片(如超过3M的图片),点击“*{按钮名称}*”按钮'/> + <step id='8' value='上传非*{文件限制}*格式的文件,点击“*{按钮名称}*”按钮'/> + <step id='9' value='*{操作名称}*上传非图片格式的文件,点击“*{按钮名称}*”按钮'/> + <step id='10' value='*{操作名称}*小于*{fileMin}**{s}**{mode}*,点击“*{按钮名称}*”按钮'/> + <step id='11' value='*{操作名称}**{fileMin}**{s}**{mode}*,点击“*{按钮名称}*”按钮'/> + <step id='12' value='*{操作名称}*大于*{fileMax}**{s}**{mode}*,点击“*{按钮名称}*”按钮'/> + <step id='13' value='*{操作名称}**{fileMax}**{s}**{mode}*,点击“*{按钮名称}*”按钮'/> </steps> - <expectations> - <expectation id="2" value="ͼƬܽԤ"/> - <expectation id="5" value="ϲʾκͼƬ"/> - </expectations> + <excepts> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> + <except id='3' value='图片能进行预览'/> + <except id='4' value='界面上不显示任何图片'/> + </excepts> + <titles> + <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + </titles> + <preconditions> + <precondition id='1' value='已在新增*{信息}*的页面上' /> + <precondition id='2' value='除*{控件名称}*外,其他信息均正确填写' /> + </preconditions> + <ranks> + <rank id='1' value='1' /> + <rank id='2' value='2' /> + <rank id='3' value='3' /> + </ranks> + <keys> + <key id='1' value='*{控件名称}*、*{信息}*、新增' /> + </keys> </case> - <case function="addUploadFileCase"> + <case name='addUploadFileCase'> <steps> - <step id="1" value="ϴļ*{buttonName}*ť"/> - <step id="2" value="ϴļɾͼƬϴһļ*{buttonName}*ť"/> - <step id="3" value="ϴͬһļ*{buttonName}*ť"/> - <step id="4" value="ϴƴСļ*{buttonName}*ť"/> - <step id="5" value="ϴϴļ糬50Mļ*{buttonName}*ť"/> - <step id="6" value="ϴ*{fileGroup}*ʽļ*{buttonName}*ť"/> - <step id="7" value="*{text}*С*{fileMin}**{s}**{mode}**{buttonName}*ť"/> - <step id="8" value="*{text}**{fileMin}**{s}**{mode}**{buttonName}*ť"/> - <step id="9" value="*{text}**{fileMax}**{s}**{mode}**{buttonName}*ť"/> - <step id="10" value="*{text}**{fileMax}**{s}**{mode}**{buttonName}*ť"/> + <step id='1' value='不上传文件,点击“*{按钮名称}*”按钮'/> + <step id='2' value='上传文件后删除图片再上传一个文件,点击“*{按钮名称}*”按钮'/> + <step id='3' value='上传同一个文件,点击“*{按钮名称}*”按钮'/> + <step id='4' value='上传超过限制大小的文件,点击“*{按钮名称}*”按钮'/> + <step id='5' value='上传较大的文件(如超过50M的文件),点击“*{按钮名称}*”按钮'/> + <step id='6' value='上传非*{文件限制}*格式的文件,点击“*{按钮名称}*”按钮'/> + <step id='7' value='*{操作名称}*小于*{fileMin}**{s}**{mode}*,点击“*{按钮名称}*”按钮'/> + <step id='8' value='*{操作名称}**{fileMin}**{s}**{mode}*,点击“*{按钮名称}*”按钮'/> + <step id='9' value='*{操作名称}*大于*{fileMax}**{s}**{mode}*,点击“*{按钮名称}*”按钮'/> + <step id='10' value='*{操作名称}**{fileMax}**{s}**{mode}*,点击“*{按钮名称}*”按钮'/> </steps> - <expectations> - </expectations> + <excepts> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> + </excepts> + <titles> + <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + </titles> + <preconditions> + <precondition id='1' value='已在新增*{信息}*的页面上' /> + <precondition id='2' value='除*{控件名称}*外,其他信息均正确填写' /> + </preconditions> + <ranks> + <rank id='1' value='1' /> + <rank id='2' value='2' /> + <rank id='3' value='3' /> + </ranks> + <keys> + <key id='1' value='*{控件名称}*、*{信息}*、新增' /> + </keys> </case> - <case function="addWholeInformationCase"> + <case name='addWholeInformationCase'> <steps> - <step id="1" value="ȷдеϢ*{buttonName}*ť"/> + <step id='1' value='正确填写所有的信息,点击“*{按钮名称}*”按钮'/> </steps> - <expectations> - </expectations> + <excepts> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + </excepts> + <titles> + <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + </titles> + <preconditions> + <precondition id='1' value='已在新增*{信息}*的页面上' /> + <precondition id='2' value='除*{控件名称}*外,其他信息均正确填写' /> + </preconditions> + <ranks> + <rank id='1' value='1' /> + <rank id='2' value='2' /> + <rank id='3' value='3' /> + </ranks> + <keys> + <key id='1' value='*{控件名称}*、*{信息}*、新增' /> + </keys> </case> - <case function="addUnWholeInformationCase"> + <case name='addUnWholeInformationCase'> <steps> - <step id="1" value="дκϢ*{buttonName}*ť"/> - <step id="2" value="ֻдеıϢ*{buttonName}*ť"/> - <step id="3" value="ֻдеķDZϢ*{buttonName}*ť"/> + <step id='1' value='不填写任何信息,点击“*{按钮名称}*”按钮'/> + <step id='2' value='只填写所有的必填项信息,点击“*{按钮名称}*”按钮'/> + <step id='3' value='只填写所有的非必填项信息,点击“*{按钮名称}*”按钮'/> </steps> - <expectations> - </expectations> + <excepts> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> + </excepts> + <titles> + <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + </titles> + <preconditions> + <precondition id='1' value='已在新增*{信息}*的页面上' /> + <precondition id='2' value='除*{控件名称}*外,其他信息均正确填写' /> + </preconditions> + <ranks> + <rank id='1' value='1' /> + <rank id='2' value='2' /> + <rank id='3' value='3' /> + </ranks> + <keys> + <key id='1' value='*{控件名称}*、*{信息}*、新增' /> + </keys> </case> </cases> \ No newline at end of file diff --git a/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/BrowseList.xml b/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/BrowseList.xml index 3636769..1df5308 100644 --- a/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/BrowseList.xml +++ b/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/BrowseList.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="GBK"?> <cases project="BrowseList"> - <case function="addAppBrowseListCase"> + <case name="addAppBrowseListCase"> <title value="*{name}*б" /> <keyword value="*{name}*б,ˢ," /> <rank value="1" /> @@ -23,7 +23,7 @@ </expectations> </case> - <case function="addWebBrowseListCase"> + <case name="addWebBrowseListCase"> <title value="*{name}*б" /> <keyword value="*{name}*б,ˢ," /> <rank value="1" /> @@ -48,7 +48,7 @@ </expectations> </case> - <case function="addInputSearchCase"> + <case name="addInputSearchCase"> <title value="ͨ*{condition}**{information}*" /> <keyword value="*{information}*б," /> <rank value="1" /> @@ -69,7 +69,7 @@ </expectations> </case> - <case function="addSelectSearchCase"> + <case name="addSelectSearchCase"> <title value="ͨ*{condition}**{information}*" /> <keyword value="*{information}*б," /> <rank value="1" /> @@ -92,7 +92,7 @@ </expectations> </case> - <case function="addDateSearchCase"> + <case name="addDateSearchCase"> <title value="ͨ*{condition}**{information}*" /> <keyword value="*{information}*б," /> <rank value="1" /> @@ -117,7 +117,7 @@ </expectations> </case> - <case function="addListSortCase"> + <case name="addListSortCase"> <title value="*{information}*б*{condition}*" /> <keyword value="*{information}*б," /> <rank value="1" /> @@ -136,7 +136,7 @@ </expectations> </case> - <case function="addExportListCase"> + <case name="addExportListCase"> <title value="*{information}*б" /> <keyword value="*{information}*б," /> <rank value="1" /> @@ -159,7 +159,7 @@ </expectations> </case> - <case function="addImportListCase"> + <case name="addImportListCase"> <title value="*{information}*б" /> <keyword value="*{information}*б," /> <rank value="1" /> @@ -177,7 +177,7 @@ </expectations> </case> - <case function="addResetSearchCase"> + <case name="addResetSearchCase"> <title value="" /> <keyword value="," /> <rank value="1" /> @@ -192,7 +192,7 @@ </expectations> </case> - <case function="addSwitchListShowDataCase"> + <case name="addSwitchListShowDataCase"> <title value="޸бÿҳʾ" /> <keyword value="л," /> <rank value="1" /> diff --git a/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/Map.xml b/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/Map.xml index 23f2aaa..5088915 100644 --- a/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/Map.xml +++ b/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/Map.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="GBK"?> <cases project="Map"> - <case function="addRangeFindingCase"> + <case name="addRangeFindingCase"> <title value="ڵͼϽв" /> <keyword value="ͼ," /> <rank value="3" /> @@ -26,7 +26,7 @@ </expectations> </case> - <case function="addMapPointCase"> + <case name="addMapPointCase"> <title value="鿴ͼ*{pointName}*λϢ" /> <keyword value="ͼ,*{pointName}*,λ" /> <rank value="2" /> @@ -43,7 +43,7 @@ </expectations> </case> - <case function="addMapSearchInformationCase"> + <case name="addMapSearchInformationCase"> <title value="ͨ*{condition}*ڵͼ*{name}*Ϣ" /> <keyword value="ͼ,*{name}*," /> <rank value="1" /> @@ -64,7 +64,7 @@ </expectations> </case> - <case function="addCarLocusPlaybackCase"> + <case name="addCarLocusPlaybackCase"> <title value="طų켣" /> <keyword value="켣" /> <rank value="1" /> @@ -87,7 +87,7 @@ </expectations> </case> - <case function="addShowLocusCase"> + <case name="addShowLocusCase"> <title value="ͼʾ켣" /> <keyword value="켣" /> <rank value="1" /> diff --git a/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/Username.xml b/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/Username.xml index 9a6c1c3..6395db6 100644 --- a/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/Username.xml +++ b/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/Username.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="GBK"?> <cases project="Username"> - <case function="addRightLoginCase"> + <case name="addRightLoginCase"> <title value="ͨȷûе¼" /> <keyword value="ȷ,û,,¼" /> <rank value="1" /> @@ -14,7 +14,7 @@ </expectations> </case> - <case function="addErrorLoginCase"> + <case name="addErrorLoginCase"> <title value="ͨdzûе¼" /> <keyword value="ȷ,û,,¼" /> <rank value="2" /> @@ -36,7 +36,7 @@ </expectations> </case> - <case function="addCaptchaCase"> + <case name="addCaptchaCase"> <title value="벻֤ͬе¼" /> <keyword value="֤,¼" /> <rank value="1" /> @@ -55,7 +55,7 @@ </expectations> </case> - <case function="addLoginAuthorityCase"> + <case name="addLoginAuthorityCase"> <title value="ͨͬȨ޵ʺŽе¼" /> <keyword value="Ȩ,¼" /> <rank value="1" /> @@ -72,7 +72,7 @@ </expectations> </case> - <case function="addUsernameRegisterCase"> + <case name="addUsernameRegisterCase"> <title value="ע᲻ͬû˺" /> <keyword value="û,ע" /> <rank value="1" /> @@ -100,7 +100,7 @@ </expectations> </case> - <case function="addUsernameForgetCase"> + <case name="addUsernameForgetCase"> <title value="ͨͬû˺Ž" /> <keyword value="û," /> <rank value="1" /> @@ -122,7 +122,7 @@ </expectations> </case> - <case function="addPasswordRegisterOrForgetCase"> + <case name="addPasswordRegisterOrForgetCase"> <title value="ͨͬ*{operation}*" /> <keyword value=",*{operation}*" /> <rank value="1" /> @@ -146,7 +146,7 @@ </expectations> </case> - <case function="addCodeRegisterOrForgetCase"> + <case name="addCodeRegisterOrForgetCase"> <title value="֤ͨͬ*{operation}*" /> <keyword value="֤,*{operation}*" /> <rank value="1" /> @@ -172,7 +172,7 @@ </expectations> </case> - <case function="addAlterPasswordCase"> + <case name="addAlterPasswordCase"> <title value="޸û" /> <keyword value="޸," /> <rank value="1" /> diff --git a/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/Video.xml b/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/Video.xml index 29017d0..a6f9598 100644 --- a/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/Video.xml +++ b/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/Video.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="GBK"?> <cases project="Video"> - <case function="addPlayVideoCase"> + <case name="addPlayVideoCase"> <title value="/ͣ*{videoType}*" /> <keyword value="/ͣ" /> <rank value="1" /> @@ -24,7 +24,7 @@ </expectations> </case> - <case function="addVideoScreenshotCase"> + <case name="addVideoScreenshotCase"> <title value="*{videoType}*нͼ" /> <keyword value="*{videoType}*,ͼ" /> <rank value="2" /> @@ -44,7 +44,7 @@ </expectations> </case> - <case function="addVideoAdvanceCase"> + <case name="addVideoAdvanceCase"> <title value="/*{videoType}*" /> <keyword value="*{videoType}*,," /> <rank value="2" /> @@ -76,7 +76,7 @@ </expectations> </case> - <case function="addVideoSpeedCase"> + <case name="addVideoSpeedCase"> <title value="/*{videoType}*" /> <keyword value="*{videoType}*,," /> <rank value="2" /> @@ -96,7 +96,7 @@ </expectations> </case> - <case function="addVideoProgressBarCase"> + <case name="addVideoProgressBarCase"> <title value="϶" /> <keyword value="" /> <rank value="2" /> @@ -117,7 +117,7 @@ </expectations> </case> - <case function="addFullScreenPlayCase"> + <case name="addFullScreenPlayCase"> <title value="ȫ*{videoType}*" /> <keyword value="ȫ*{videoType}*" /> <rank value="2" /> diff --git a/ConfigurationFiles/CaseConfigurationFile/CaseTemplet.xml b/ConfigurationFiles/CaseConfigurationFile/FileTemplet/CaseTemplet.xml similarity index 100% rename from ConfigurationFiles/CaseConfigurationFile/CaseTemplet.xml rename to ConfigurationFiles/CaseConfigurationFile/FileTemplet/CaseTemplet.xml diff --git a/ConfigurationFiles/NewCaseConfigurationFile/jira测试用例导入模板.xml b/ConfigurationFiles/CaseConfigurationFile/FileTemplet/jira测试用例导入模板.xml similarity index 100% rename from ConfigurationFiles/NewCaseConfigurationFile/jira测试用例导入模板.xml rename to ConfigurationFiles/CaseConfigurationFile/FileTemplet/jira测试用例导入模板.xml diff --git a/src/main/java/pres/auxiliary/work/n/tcase/AbstractCase.java b/src/main/java/pres/auxiliary/work/n/tcase/AbstractCase.java deleted file mode 100644 index 16cfaf0..0000000 --- a/src/main/java/pres/auxiliary/work/n/tcase/AbstractCase.java +++ /dev/null @@ -1,5 +0,0 @@ -package pres.auxiliary.work.n.tcase; - -public abstract class AbstractCase { - -} diff --git a/src/main/java/pres/auxiliary/work/n/tcase/Case.java b/src/main/java/pres/auxiliary/work/n/tcase/Case.java new file mode 100644 index 0000000..f1055ed --- /dev/null +++ b/src/main/java/pres/auxiliary/work/n/tcase/Case.java @@ -0,0 +1,233 @@ +package pres.auxiliary.work.n.tcase; + +import java.io.File; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; + +/** + * <p><b>文件名:</b>AbstractCase.java</p> + * <p><b>用途:</b>定义测试用例模板类能返回的基本字段,提供其相应的get与set方法,但该方法不允许包外调用</p> + * <p><b>编码时间:</b>2020年3月3日下午8:07:23</p> + * <p><b>修改时间:</b>2020年3月4日 07:39:23</p> + * @author 彭宇琦 + * @version Ver1.0 + * @since JDK 12 + * + */ +public abstract class Case { + + /** + * 步骤 + */ + private String[] step; + + /** + * 预期 + */ + private String[] except; + + /** + * 标题 + */ + private String title; + + /** + * 关键词 + */ + private String keyWord; + + /** + * 前置条件 + */ + private String[] precondition; + + /** + * 用于存储需要替换的词语的开始标记 + */ + final String START_SIGN = "*{"; + /** + * 用于存储需要替换的词语的结束标记 + */ + final String END_SIGN = "}*"; + + /** + * 优先级 + */ + private int rank; + + /** + * 用于指向测试用例xml文件的Document对象 + */ + Document configXml; + + /** + * 存储xml文件中其需要替换的词语 + */ + HashMap<String, String> textMap = new HashMap<String, String>(); + + /** + * 根据用例xml文件来构造Case类 + * @param configXmlFile xml配置文件 + * @throws IncorrectFileException 文件格式或路径不正确时抛出的异常 + */ + @SuppressWarnings("unchecked") + public Case(File configXmlFile) { + // 判断传入的configurationFile是否为一个文件类对象,若非文件类对象,则抛出异常 + try { + configXml = new SAXReader().read(configXmlFile); + } catch (DocumentException e) { + throw new IncorrectFileException("用例xml文件有误" ); + } + + //获取xml中包含value的元素,并将其中包含需要替换的词语存储至textMap\ + List<Element> textElement = configXml.selectNodes("//*[@value]"); + textElement.stream(). + //获取元素的value属性,将其转换为文本对象 + map(e -> e.attributeValue("value")). + //筛选包含*{的文本 + filter(e -> e.indexOf("*{") > -1).forEach(e -> { + //对文本按照*{切割,并筛选包含}*的文本 + Arrays.asList(e.split("\\*\\{")).stream().filter(s -> s.indexOf("}*") > -1). + forEach(s -> { + //将需要存储的替换词语存入textMap中 + textMap.put(s.substring(0, s.indexOf("}*")), ""); + }); + }); + } + + /** + * 返回步骤文本 + * @return 步骤文本 + */ + public String[] getStep() { + return step; + } + + /** + * 根据调用方法的不同设置相应的步骤文本 + * @param step 步骤文本 + */ + void setStep(String[] step) { + this.step = step; + } + + /** + * 返回预期文本 + * @return 预期文本 + */ + public String[] getExcept() { + return except; + } + + /** + * 根据调用方法的不同设置相应的预期文本 + * @param except 预期文本 + */ + void setExcept(String[] except) { + this.except = except; + } + + /** + * 返回标题文本 + * @return 标题文本 + */ + public String getTitle() { + return title; + } + + /** + * 根据调用方法的不同设置相应的标题文本 + * @param title 标题文本 + */ + void setTitle(String title) { + this.title = title; + } + + /** + * 返回关键词文本 + * @return 关键词文本 + */ + public String getKeyWord() { + return keyWord; + } + + /** + * 根据调用方法的不同设置相应的关键词文本 + * @param keyWord 关键词文本 + */ + void setKeyWord(String keyWord) { + this.keyWord = keyWord; + } + + /** + * 返回关键词文本 + * @return 关键词文本 + */ + public String[] getPrecondition() { + return precondition; + } + + /** + * 根据调用方法的不同设置相应的前置条件文本 + * @param keyWord 前置条件文本 + */ + void setPrecondition(String[] precondition) { + this.precondition = precondition; + } + + /** + * 返回优先级文本 + * @return 优先级文本 + */ + public int getRank() { + return rank; + } + + /** + * 根据调用方法的不同设置相应的优先级文本 + * @param keyWord 优先级文本 + */ + void setRank(int rank) { + this.rank = rank; + } + + /** + * 用于设置需要替换的词语 + * @param word 测试用例xml库中需要替换的词语 + * @param value 被替换的词语 + */ + public void setReplaceWord(String word, String value) { + //判断该词语是否存在于textMap中,若不存在,则抛出异常 + if (!textMap.containsKey(word)) { + throw new IncorrectFileException("未找到需要替换的词语:" + word); + } + //存储替换的词语 + textMap.put(word, value); + } + + /** + * 用于替换文本中需要替换的单词,返回替换后的文本 + * @param text 需要替换的文本 + * @return 替换后的文本 + */ + String replaceText(String text) { + StringBuilder sb = new StringBuilder(text); + //存储替换符的位置 + int index = 0; + //循环,替换content中所有需要替换的信息 + while( (index = sb.indexOf(START_SIGN)) != -1 ) { + //存储待替换的变量名 + String var = sb.substring(index + START_SIGN.length(), sb.indexOf(END_SIGN)); + //替换该变量名 + sb.replace(index, sb.indexOf(END_SIGN) + END_SIGN.length(), textMap.get(var)); + } + + return sb.toString(); + } +} diff --git a/src/main/java/pres/auxiliary/work/n/tcase/DataListCase.java b/src/main/java/pres/auxiliary/work/n/tcase/DataListCase.java new file mode 100644 index 0000000..452689d --- /dev/null +++ b/src/main/java/pres/auxiliary/work/n/tcase/DataListCase.java @@ -0,0 +1,15 @@ +package pres.auxiliary.work.n.tcase; + +/** + * <p><b>文件名:</b>DataListCase.java</p> + * <p><b>用途:</b>用于生成数据列表相关的测试用例</p> + * <p><b>编码时间:</b>2020年3月3日下午8:25:33</p> + * <p><b>修改时间:</b>2020年3月3日下午8:25:33</p> + * @author + * @version Ver1.0 + * @since JDK 12 + * + */ +public class DataListCase extends Case { + +} diff --git a/src/main/java/pres/auxiliary/work/n/tcase/InformationCase.java b/src/main/java/pres/auxiliary/work/n/tcase/InformationCase.java new file mode 100644 index 0000000..63ada04 --- /dev/null +++ b/src/main/java/pres/auxiliary/work/n/tcase/InformationCase.java @@ -0,0 +1,27 @@ +package pres.auxiliary.work.n.tcase; + +import java.io.File; +import java.util.HashMap; + +/** + * <p><b>文件名:</b>InformationCase.java</p> + * <p><b>用途:</b>用于输出与页面新增或编辑信息相关的用例</p> + * <p><b>编码时间:</b>2020年3月5日上午8:30:12</p> + * <p><b>修改时间:</b>2020年3月5日上午8:30:12</p> + * @author 彭宇琦 + * @version Ver1.0 + * @since JDK 12 + */ +public class InformationCase extends Case { + + /** + * 通过测试用例模板库的xml配置文件来构造InformationCase对象 + * @param configXmlFile 用例模板库的xml文件对象 + */ + public InformationCase(File configXmlFile) { + super(configXmlFile); + } + + + +} diff --git a/src/main/java/pres/auxiliary/work/n/tcase/WriteTestCase.java b/src/main/java/pres/auxiliary/work/n/tcase/WriteTestCase.java index df7cc5a..70f87e2 100644 --- a/src/main/java/pres/auxiliary/work/n/tcase/WriteTestCase.java +++ b/src/main/java/pres/auxiliary/work/n/tcase/WriteTestCase.java @@ -43,7 +43,7 @@ import org.dom4j.io.SAXReader; * <b>编码时间:</b>2020年2月17日下午9:36:00 * </p> * <p> - * <b>修改时间:</b>2020年2月17日下午9:36:00 + * <b>修改时间:</b>2020年3月3日下午8:07:23 * </p> * * @author 彭宇琦 @@ -107,19 +107,16 @@ public class WriteTestCase { * 只存在一个sheet标签时,则直接获取其对应sheet下所有column标签的id属性;若存在 * 多个sheet标签时,则读取第一个sheet标签,如需切换sheet标签,则可调用{@link #switchSheet(String)} 方法。 * - * @param configurationFile 测试文件模板xml配置文件类对象 + * @param configFile 测试文件模板xml配置文件类对象 * @param caseFile 测试用例文件类对象 - * @throws DocumentException xml文件内容不正确时抛出的异常 * @throws IncorrectFileException 文件格式或路径不正确时抛出的异常 */ - public WriteTestCase(File configurationFile, File caseFile) throws DocumentException { - // 判断传入的configurationFile是否为一个文件类对象,若非文件类对象,则抛出异常(isFile()方法包含判断文件是否存在) - // 再判断文件是否包含文件路径是否包含“.xml” - if (configurationFile.isFile() && configurationFile.getAbsolutePath().indexOf(".xml") > -1) { - // 读取xml文件的信息 - configXml = new SAXReader().read(configurationFile); - } else { - throw new IncorrectFileException("不正确的文件格式:" + configurationFile.getAbsolutePath()); + public WriteTestCase(File configFile, File caseFile) { + // 判断传入的configurationFile是否为一个文件类对象,若非文件类对象,则抛出异常 + try { + configXml = new SAXReader().read(configFile); + } catch (DocumentException e) { + throw new IncorrectFileException("用例xml文件有误" ); } // 获取xml文件中的第一个sheet标签,则将该标签的name属性内容传入getColumnId中