From aaf57138be5f9bdf20eea55db34d70007758a9bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E5=AE=87=E7=90=A6?= <465615774@qq.com> Date: Thu, 19 Mar 2020 19:29:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=B7=BB=E5=8A=A0=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E7=B1=BB=E7=94=A8=E4=BE=8B=E7=94=9F=E6=88=90=E5=B7=A5?= =?UTF-8?q?=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CaseTemplet/AddInformation.xml | 62 +-- .../auxiliary/tool/web/InputRuleType.java | 56 --- .../work/n/tcase/InformationCase.java | 422 ++++++++++++++++-- .../work/testcase/InformationCaseTest.java | 147 +++++- 4 files changed, 574 insertions(+), 113 deletions(-) delete mode 100644 src/main/java/pres/auxiliary/tool/web/InputRuleType.java diff --git a/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/AddInformation.xml b/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/AddInformation.xml index 16e8e45..93d9623 100644 --- a/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/AddInformation.xml +++ b/ConfigurationFiles/CaseConfigurationFile/CaseTemplet/AddInformation.xml @@ -15,7 +15,7 @@ - + <title id='1' value='对新增*{信息}*界面的*{控件名称}*进行测试' /> </titles> <preconditions> <precondition id='1' value='已在新增*{信息}*的页面上' /> @@ -54,7 +54,7 @@ <except id='6' value='*{成功预期前文}**{信息}*创建成功,多余的小数位将按照规则舍弃,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> </excepts> <titles> - <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + <title id='1' value='对新增*{信息}*界面的*{控件名称}*进行测试' /> </titles> <preconditions> <precondition id='1' value='已在新增*{信息}*的页面上' /> @@ -78,13 +78,13 @@ <step id='4' value='选择选项后,点击清除按钮'/> </steps> <excepts> - <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息,并且新增数据的*{控件名称}*显示为新增时所选信息*{成功预期后文}*'/> <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> <except id='3' value='选项变为默认选项或第一个选项'/> <except id='4' value='选项变为空选项'/> </excepts> <titles> - <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + <title id='1' value='对新增*{信息}*界面的*{控件名称}*进行测试' /> </titles> <preconditions> <precondition id='1' value='已在新增*{信息}*的页面上' /> @@ -109,13 +109,13 @@ <step id='5' value='查看*{控件名称}*选项'/> </steps> <excepts> - <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息,并且新增数据的*{控件名称}*显示为新增时所选信息*{成功预期后文}*'/> <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> <except id='3' value='不会出现有两个或以上的选项被选中的情况'/> <except id='4' value='*{控件名称}*选项应有一个默认选项'/> </excepts> <titles> - <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + <title id='1' value='对新增*{信息}*界面的*{控件名称}*进行测试' /> </titles> <preconditions> <precondition id='1' value='已在新增*{信息}*的页面上' /> @@ -141,13 +141,13 @@ <step id='6' value='选择其中多个选项,点击“*{按钮名称}*”按钮'/> </steps> <excepts> - <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> + <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息,并且新增数据的*{控件名称}*显示为新增时所选信息*{成功预期后文}*'/> <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> <except id='3' value='所有的选项均被勾选'/> <except id='4' value='所有的选项均被取消勾选'/> </excepts> <titles> - <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + <title id='1' value='对新增*{信息}*界面的*{控件名称}*进行测试' /> </titles> <preconditions> <precondition id='1' value='已在新增*{信息}*的页面上' /> @@ -170,17 +170,17 @@ <step id='3' value='选择时间后清空时间,点击“*{按钮名称}*”按钮'/> <step id='4' value='手动输入正确格式的日期,点击“*{按钮名称}*”按钮'/> <step id='5' value='手动输入非正确格式的日期,点击“*{按钮名称}*”按钮'/> - <step id='6' value='输入或选择大于*{结束日期}*的日期,点击“*{按钮名称}*”按钮'/> - <step id='7' value='选择大于*{结束日期}*的日期,点击“*{按钮名称}*”按钮'/> - <step id='8' value='输入或选择小于*{开始日期}*的日期,点击“*{按钮名称}*”按钮'/> - <step id='9' value='选择小于*{开始日期}*的日期,点击“*{按钮名称}*”按钮'/> + <step id='6' value='选择大于“*{结束日期}*”的日期,点击“*{按钮名称}*”按钮'/> + <step id='7' value='选择与“*{结束日期}*”相同的日期,点击“*{按钮名称}*”按钮'/> + <step id='8' value='选择小于“*{开始日期}*”的日期,点击“*{按钮名称}*”按钮'/> + <step id='9' value='选择与“*{开始日期}*”相同的日期,点击“*{按钮名称}*”按钮'/> </steps> <excepts> <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> </excepts> <titles> - <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + <title id='1' value='对新增*{信息}*界面的*{控件名称}*进行测试' /> </titles> <preconditions> <precondition id='1' value='已在新增*{信息}*的页面上' /> @@ -210,7 +210,7 @@ <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> </excepts> <titles> - <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + <title id='1' value='对新增*{信息}*界面的*{控件名称}*进行测试' /> </titles> <preconditions> <precondition id='1' value='已在新增*{信息}*的页面上' /> @@ -241,7 +241,7 @@ <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> </excepts> <titles> - <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + <title id='1' value='对新增*{信息}*界面的*{控件名称}*进行测试' /> </titles> <preconditions> <precondition id='1' value='已在新增*{信息}*的页面上' /> @@ -280,7 +280,7 @@ <except id='4' value='界面上不显示任何图片'/> </excepts> <titles> - <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + <title id='1' value='对新增*{信息}*界面的*{控件名称}*进行测试' /> </titles> <preconditions> <precondition id='1' value='已在新增*{信息}*的页面上' /> @@ -298,23 +298,31 @@ <case name='addUploadFileCase'> <steps> - <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='*{操作名称}*小于*{文件最小个数}**{文件单位}**{文件类型}*,点击“*{按钮名称}*”按钮'/> - <step id='8' value='*{操作名称}**{文件最小个数}**{文件单位}**{文件类型}*,点击“*{按钮名称}*”按钮'/> - <step id='9' value='*{操作名称}*大于*{文件最大个数}**{文件单位}**{文件类型}*,点击“*{按钮名称}*”按钮'/> - <step id='10' value='*{操作名称}**{文件最大个数}**{文件单位}**{文件类型}*,点击“*{按钮名称}*”按钮'/> + <step id='11' value='上传*{文件类型}*后点击相应的预览按钮'/> + <step id='1' value='不上传*{文件类型}*,点击“*{按钮名称}*”按钮'/> + <step id='2' value='上传*{文件类型}*后删除*{文件类型}*,再上传一个*{文件类型}*,点击“*{按钮名称}*”按钮'/> + <step id='3' value='上传*{文件类型}*后删除*{文件类型}*,点击“*{按钮名称}*”按钮'/> + <step id='4' value='上传超过*{文件大小}*M大小的*{文件类型}*'/> + <step id='5' value='上传较大的*{文件类型}*'/> + <step id='6' value='上传非*{文件格式}*格式的*{文件类型}*'/> + <step id='7' value='上传小于*{文件最小个数}*个*{文件类型}*,点击“*{按钮名称}*”按钮'/> + <step id='8' value='上传*{文件最小个数}*个*{文件类型}*,点击“*{按钮名称}*”按钮'/> + <step id='9' value='上传大于*{文件最大个数}*个*{文件类型}*,点击“*{按钮名称}*”按钮'/> + <step id='10' value='上传*{文件最大个数}*个*{文件类型}*,点击“*{按钮名称}*”按钮'/> </steps> <excepts> <except id='1' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息*{成功预期后文}*'/> <except id='2' value='*{失败预期前文}**{信息}*创建失败,并给出相应的提示*{失败预期后文}*'/> + <except id='3' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息,并且其*{信息}*的*{控件名称}*为最后上传的文件*{成功预期后文}*'/> + <except id='4' value='*{成功预期前文}**{信息}*创建成功,界面返回到列表页,其*{信息}*列表上显示新增的信息,并且其*{信息}*的*{控件名称}*显示为最后上传的图片*{成功预期后文}*'/> + <except id='5' value='上传的图片被放大显示在页面中'/> + <except id='6' value='上传的文件被下载或者在新的页面中显示'/> + <except id='7' value='给出文件超过大小限制相关的提示'/> + <except id='9' value='给出文件格式不正确相关的提示'/> + <except id='8' value='若允许上传则点击“*{按钮名称}*”按钮后*{信息}*创建成功,若无法上传,则给出相应的友好提示'/> </excepts> <titles> - <title id='1' value='新增不同*{控件名称}*的*{信息}*' /> + <title id='1' value='对新增*{信息}*界面的*{控件名称}*进行测试' /> </titles> <preconditions> <precondition id='1' value='已在新增*{信息}*的页面上' /> diff --git a/src/main/java/pres/auxiliary/tool/web/InputRuleType.java b/src/main/java/pres/auxiliary/tool/web/InputRuleType.java deleted file mode 100644 index 2bfc279..0000000 --- a/src/main/java/pres/auxiliary/tool/web/InputRuleType.java +++ /dev/null @@ -1,56 +0,0 @@ -package pres.auxiliary.work.n.tcase; - -/** - * <p><b>文件名:</b>InputRuleType.java</p> - * <p><b>用途:</b>用于枚举控件中可输入字符类型的限制</p> - * <p><b>编码时间:</b>2020年3月14日 下午9:14:30</p> - * <p><b>修改时间:</b>2020年3月14日 下午9:14:30</p> - * @author 彭宇琦 - * @version Ver1.0 - * @since JDK 12 - */ -public enum InputRuleType { - /** - * 中文 - */ - CH("中文"), - /** - * 英文 - */ - EN("英文"), - /** - * 数字 - */ - NUM("数字"), - /** - * 特殊字符 - */ - SPE("特殊字符"), - /** - * 小写字母 - */ - LOW("小写字母"), - /** - * 大写字母 - */ - CAP("大写字母"); - - /** - * 枚举名称 - */ - private String name; - /** - * 初始化枚举名称 - * @param name 枚举名称 - */ - private InputRuleType(String name) { - this.name = name; - } - /** - * 返回枚举名称 - * @return 枚举名称 - */ - public String getName() { - return name; - } -} diff --git a/src/main/java/pres/auxiliary/work/n/tcase/InformationCase.java b/src/main/java/pres/auxiliary/work/n/tcase/InformationCase.java index a1ab0b3..e91c7a2 100644 --- a/src/main/java/pres/auxiliary/work/n/tcase/InformationCase.java +++ b/src/main/java/pres/auxiliary/work/n/tcase/InformationCase.java @@ -170,11 +170,6 @@ public class InformationCase extends Case { //---------------------------------------------------------------- - //填写存在的内容 - addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "12")); - //根据是否必填来判断填入成功或失败预期 - addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, isRepeat ? "2" : "1")); - //存储前置条件信息 addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION)); //存储关键词信息 @@ -190,7 +185,8 @@ public class InformationCase extends Case { * 1.输入长度限制为2~10个字符时:addLengthRuleTextboxCase(..., 2, 10, ...)<br> * 2.输入长度限制为最多输入10个字符时:addLengthRuleTextboxCase(..., 0, 10, ...)<br> * 3.输入长度限制为最少输入2个字符时:addLengthRuleTextboxCase(..., 2, 0, ...)<br> - * 注意:若两个参数传入一样,且都不为0,则等价于第2中情况;若两个参数都小于等于0时,则抛出异常 + * 4.输入长度限制仅能输入2个字符时:addLengthRuleTextboxCase(..., 2, 2, ...)<br> + * 注意:若两个参数都小于等于0时,则抛出异常 * @param name 控件名称 * @param isMust 是否必填 * @param isRepeat 是否可以与存在的内容重复 @@ -234,7 +230,7 @@ public class InformationCase extends Case { //等于最小限制 addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "5")); addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1")); - } else if ((minLen == 0 && maxLen != 0) || minLen == maxLen) { + } else if (minLen == 0 && maxLen != 0) { //存储最大输入限制 wordMap.put(WordType.INPUT_MAX_LENGTH.getName(), String.valueOf(maxLen)); //大于最大限制 @@ -257,9 +253,12 @@ public class InformationCase extends Case { //大于最大限制 addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "6")); addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "2")); - //等于最大限制 - addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "7")); - addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1")); + //若最大最小限制相等,则不添加该条用例 + if (minLen != maxLen) { + //等于最大限制 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "7")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1")); + } } //---------------------------------------------------------------------- @@ -458,7 +457,7 @@ public class InformationCase extends Case { * @param isClear 是否有按钮可以清空文本框 * @return 类本身 */ - public Case addIDCardCase(String name, boolean isMust, boolean isRepeat, boolean isClear) { + public Case addIdCardCase(String name, boolean isMust, boolean isRepeat, boolean isClear) { //清空字段的内容 clearFieldText(); // 存储case标签的name属性内容 @@ -684,29 +683,248 @@ public class InformationCase extends Case { //---------------------------------------------------------------------- //存储步骤与预期信息 - //依次选择选项 - addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "1")); - addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "3")); - //再次依次选择选项 - addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "2")); - addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "4")); + //添加基本用例 + dateboxCommonCase(isMust, isInput, isClear); + //---------------------------------------------------------------------- - //不进行选择 - addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "3")); + //存储前置条件信息 + addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION)); + //存储关键词信息 + addFieldText(LabelType.KEY, getAllLabelText(caseName, LabelType.KEY)); + //存储优先级信息 + addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1")); + + return this; + } + + /** + * 用于生成与日期相关的测试用例 + * @param name 控件名称 + * @param isMust 是否必填 + * @param isInput 是否可以输入 + * @param isClear 是否可以清除 + * @return 类本身 + */ + public Case addStartDateCase(String name, String endDateName, boolean isMust, boolean isInput, boolean isClear) { + //清空字段的内容 + clearFieldText(); + // 存储case标签的name属性内容 + String caseName = "addDateCase"; + //添加控件名称 + wordMap.put(WordType.CONTROL_NAME.getName(), name); + + //存储标题信息 + addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1")); + + //---------------------------------------------------------------------- + //存储步骤与预期信息 + //添加基本用例 + dateboxCommonCase(isMust, isInput, isClear); + + wordMap.put(WordType.END_DATE.getName(), endDateName); + //大于结束时间 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "6")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "2")); + + //等于结束时间 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "7")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1")); + //---------------------------------------------------------------------- + + //存储前置条件信息 + addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION)); + //存储关键词信息 + addFieldText(LabelType.KEY, getAllLabelText(caseName, LabelType.KEY)); + //存储优先级信息 + addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1")); + + return this; + } + + /** + * 用于生成与日期相关的测试用例 + * @param name 控件名称 + * @param isMust 是否必填 + * @param isInput 是否可以输入 + * @param isClear 是否可以清除 + * @return 类本身 + */ + public Case addEndDateCase(String name, String startDateName, boolean isMust, boolean isInput, boolean isClear) { + //清空字段的内容 + clearFieldText(); + // 存储case标签的name属性内容 + String caseName = "addDateCase"; + //添加控件名称 + wordMap.put(WordType.CONTROL_NAME.getName(), name); + + //存储标题信息 + addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1")); + + //---------------------------------------------------------------------- + //存储步骤与预期信息 + //添加基本用例 + dateboxCommonCase(isMust, isInput, isClear); + + wordMap.put(WordType.START_DATE.getName(), startDateName); + //小于开始时间 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "8")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "2")); + + //等于开始时间 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "9")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1")); + //---------------------------------------------------------------------- + + //存储前置条件信息 + addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION)); + //存储关键词信息 + addFieldText(LabelType.KEY, getAllLabelText(caseName, LabelType.KEY)); + //存储优先级信息 + addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1")); + + return this; + } + + /** + * 用于生成上传文件或图片相关的测试用例,当只有单边限制时,则其中一个参数传入小于等于0的数字即可,例如:<br> + * 1.输入文件个数限制为2~10个字符时:addUploadFileCase(..., 2, 10, ...)<br> + * 2.输入文件个数限制为最多输入10个字符时:addUploadFileCase(..., 0, 10, ...)<br> + * 3.输入文件个数限制为最少输入2个字符时:addUploadFileCase(..., 2, 0, ...)<br> + * 4.输入文件个数限制仅能输入2个字符时:addUploadFileCase(..., 2, 2, ...)<br> + * 5.若两个参数都小于等于0时,则不对文件数量进行限制 + * @param name 控件名称 + * @param isMust 是否必填 + * @param isDelete 是否可以删除 + * @param isPreview 是否可以预览 + * @param fileSize 文件大小限制(单位为M),传参大于0时表示有文件大小限制 + * @param minLen 最小文件个数限制 + * @param maxLen 最大文件个数限制 + * @param uploadFileType 上传的文件类型 + * @param fileRuleTypes 文件格式限制 + * @return 类本身 + */ + public Case addUploadFileCase(String name, boolean isMust, boolean isDelete, boolean isPreview, int fileSize, int minLen, int maxLen, UploadFileType uploadFileType, FileRuleType...fileRuleTypes) { + //清空字段的内容 + clearFieldText(); + // 存储case标签的name属性内容 + String caseName = "addUploadFileCase"; + + //添加控件名称 + wordMap.put(WordType.CONTROL_NAME.getName(), name); + //转换输入限制为集合类型 + List<FileRuleType> fileRules = Arrays.asList(fileRuleTypes); + + //存储标题信息 + addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1")); + + //---------------------------------------------------------------------- + //存储步骤与预期信息 + //添加文件类型 + wordMap.put(WordType.FILE_TYPE.getName(), uploadFileType.getName()); + + //预览文件 + if (isPreview) { + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "11")); + //根据枚举类型选择相应的预期 + switch (uploadFileType) { + case FILE: + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "6")); + break; + case IMAGE: + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "5")); + break; + default: + throw new IllegalArgumentException("不支持的类型:" + uploadFileType.getName()); + } + } + + //不上传文件 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "1")); addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, isMust ? "2" : "1")); - //选择第一个 - addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "4")); - addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1")); + //删除文件用例 + if (isDelete) { + //删除文件点保存 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "3")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, isMust ? "2" : "1")); - //选择最后一个 - addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "5")); - addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1")); + //删除文件再上传 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "2")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, uploadFileType.equals(UploadFileType.IMAGE) ? "4" : "3")); + } - //选择多个 - addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "6")); - addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1")); + //上传文件个数限制 + //判断传入的限制参数是否有小于0的参数,参数小于0则直接转换为0 + minLen = minLen < 0 ? 0 : minLen; + maxLen = maxLen < 0 ? 0 : maxLen; + //判断两个限制参数是否其中一个大于0,若是,则添加上传文件个数限制的用例 + //判断长度是否都为0,若都为0,则抛出异常 + if (minLen != 0 && maxLen == 0) { + //存储最小上传限制 + wordMap.put(WordType.UPLOAD_MIN_LENGTH.getName(), String.valueOf(minLen)); + + //小于最小限制 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "7")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "2")); + //等于最小限制 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "8")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1")); + } else if (minLen == 0 && maxLen != 0) { + //存储最大输入限制 + wordMap.put(WordType.UPLOAD_MAX_LENGTH.getName(), String.valueOf(maxLen)); + //大于最大限制 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "9")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "2")); + //等于最大限制 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "10")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1")); + } else if (minLen != 0 && maxLen != 0) { + //若都不为0,则将相应的内容进行存储,且判断最大长度与最小长度是否传反,若传反,则调换顺序 + wordMap.put(WordType.UPLOAD_MIN_LENGTH.getName(), String.valueOf(minLen < maxLen ? minLen : maxLen)); + wordMap.put(WordType.UPLOAD_MAX_LENGTH.getName(), String.valueOf(minLen < maxLen ? maxLen : minLen)); + + //小于最小限制 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "7")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "2")); + //等于最小限制 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "8")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1")); + //大于最大限制 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "9")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "2")); + //若最大最小限制相等,则不添加等于最大限制 + if (minLen != maxLen) { + //等于最大限制 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "10")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1")); + } + } else { + //若均等于0,则不进行处理 + } + //上传大于限制的文件 + if (fileSize > 0) { + //存储大小限制 + wordMap.put(WordType.FILE_SIZE.getName(), String.valueOf(fileSize)); + //超过大小限制的用例 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "4")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "7")); + } else { + //超过大小限制的用例 + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "5")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "8")); + } + + //上传非限制格式文件 + if (fileRules.size() != 0) { + String fileRulesText = ""; + for (FileRuleType fileRule : fileRules) { + fileRulesText += (fileRule.getName() + "、"); + } + wordMap.put(WordType.FILE_RULE.getName(), fileRulesText.substring(0, fileRulesText.length() - 1)); + addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "6")); + addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "9")); + } //---------------------------------------------------------------------- //存储前置条件信息 @@ -861,6 +1079,34 @@ public class InformationCase extends Case { * 小数位数 */ INPUT_DECIMALS("小数位数"), + /** + * 结束日期 + */ + END_DATE("结束日期"), + /** + * 开始日期 + */ + START_DATE("开始日期"), + /** + * 文件类型 + */ + FILE_TYPE("文件类型"), + /** + * 最长文件个数限制 + */ + UPLOAD_MAX_LENGTH("文件最大个数"), + /** + * 最短文件个数限制 + */ + UPLOAD_MIN_LENGTH("文件最小个数"), + /** + * 文件大小 + */ + FILE_SIZE("文件大小"), + /** + * 文件格式 + */ + FILE_RULE("文件格式"), ; /** * 存储需要替换的单词名称 @@ -958,4 +1204,124 @@ public class InformationCase extends Case { */ FIXED; } + + /** + * <p><b>文件名:</b>InformationCase.java</p> + * <p><b>用途:</b>用于枚举上传文件的格式</p> + * <p><b>编码时间:</b>2020年3月18日上午9:30:34</p> + * <p><b>修改时间:</b>2020年3月18日上午9:30:34</p> + * @author 彭宇琦 + * @version Ver1.0 + * @since JDK 12 + * + */ + public enum FileRuleType { + /** + * jpg格式 + */ + JPG("jpg"), + /** + * gif格式 + */ + GIF("gif"), + /** + * png格式 + */ + PNG("png"), + /** + * bmp格式 + */ + BMP("bmp"), + /** + * doc格式 + */ + DOC("doc"), + /** + * docx格式 + */ + DOCX("docx"), + /** + * txt格式 + */ + TXT("txt"), + /** + * xls格式 + */ + XLS("xls"), + /** + * xlsx格式 + */ + XLSX("xlsx"), + /** + * pdf格式 + */ + PDF("pdf"), + /** + * csv格式 + */ + CSV("csv"), + ; + + /** + * 文件格式名称 + */ + private String name; + /** + * 初始化枚举名称 + * @param name 枚举名称 + */ + private FileRuleType(String name) { + this.name = name; + } + + /** + * 返回格式名称 + */ + public String getName() { + return name; + } + } + + /** + * <p><b>文件名:</b>InformationCase.java</p> + * <p><b>用途:</b>用于枚举上传文件的类型</p> + * <p><b>编码时间:</b>2020年3月18日上午9:56:51</p> + * <p><b>修改时间:</b>2020年3月18日上午9:56:51</p> + * @author 彭宇琦 + * @version Ver1.0 + * @since JDK 12 + * + */ + public enum UploadFileType { + /** + * 上传文件 + */ + FILE("文件"), + /** + * 上传图片 + */ + IMAGE("图片") + ; + + /** + * 上传文件类型名称 + */ + private String name; + + /** + * 返回枚举名称 + * @return 枚举名称 + */ + public String getName() { + return name; + } + + /** + * 初始化枚举值名称 + * @param name 枚举值名称 + */ + private UploadFileType(String name) { + this.name = name; + } + } } diff --git a/src/test/java/pres/auxiliary/work/testcase/InformationCaseTest.java b/src/test/java/pres/auxiliary/work/testcase/InformationCaseTest.java index b7d94e5..fb51b17 100644 --- a/src/test/java/pres/auxiliary/work/testcase/InformationCaseTest.java +++ b/src/test/java/pres/auxiliary/work/testcase/InformationCaseTest.java @@ -1,6 +1,7 @@ package pres.auxiliary.work.testcase; import java.io.File; +import java.util.concurrent.atomic.AtomicInteger; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; @@ -8,7 +9,9 @@ import org.testng.annotations.Test; import pres.auxiliary.work.n.tcase.CaseContentException; import pres.auxiliary.work.n.tcase.InformationCase; +import pres.auxiliary.work.n.tcase.InformationCase.FileRuleType; import pres.auxiliary.work.n.tcase.InformationCase.InputRuleType; +import pres.auxiliary.work.n.tcase.InformationCase.UploadFileType; public class InformationCaseTest { InformationCase ic = new InformationCase(new File("ConfigurationFiles/CaseConfigurationFile/CaseTemplet/AddInformation.xml")); @@ -16,7 +19,7 @@ InformationCase ic = new InformationCase(new File("ConfigurationFiles/CaseConfig @BeforeClass public void start() { ic.setReplaceWord(InformationCase.BUTTON_NAME, "保存"); - ic.setReplaceWord(InformationCase.ADD_INFORMATION, "用户列表"); + ic.setReplaceWord(InformationCase.ADD_INFORMATION, "用户"); ic.setReplaceWord(InformationCase.FAIL_EXCEPT_TEXT_START, "测试*失败*预期前文"); ic.setReplaceWord(InformationCase.FAIL_EXCEPT_TEXT_END, "测试*失败*预期后文"); ic.setReplaceWord(InformationCase.SUCCESS_EXCEPT_TEXT_START, "测试*成功*预期前文"); @@ -27,8 +30,12 @@ InformationCase ic = new InformationCase(new File("ConfigurationFiles/CaseConfig public void outputInformation() { System.out.println("------------------------------"); ic.getFieldTextMap().forEach((k, v) -> { + //可生成序号,类封装了普通的自增等操作 + AtomicInteger commitCount = new AtomicInteger(1); System.out.println(k + ":"); - v.forEach(System.out :: println); + v.forEach(s -> { + System.out.println(commitCount.getAndIncrement() + "." + s); + }); }); } @@ -157,4 +164,140 @@ InformationCase ic = new InformationCase(new File("ConfigurationFiles/CaseConfig public void addNumberRuleTextboxCaseTest_6() { ic.addNumberRuleTextboxCase("测试控件14", true, false, false, 2, InformationCase.MAX_NUMBER, 20); } + + /** + * 测试{@link InformationCase#addPhoneCase(String, boolean, boolean, boolean, pres.auxiliary.work.n.tcase.InformationCase.PhoneType...)}方法 + */ + @Test + public void addPhoneCaseTest_Fixed() { + ic.addPhoneCase("测试控件15", true, false, false, InformationCase.PhoneType.FIXED); + } + + /** + * 测试{@link InformationCase#addPhoneCase(String, boolean, boolean, boolean, pres.auxiliary.work.n.tcase.InformationCase.PhoneType...)}方法 + */ + @Test + public void addPhoneCaseTest_Moble() { + ic.addPhoneCase("测试控件16", true, false, false, InformationCase.PhoneType.MOBLE); + } + + /** + * 测试{@link InformationCase#addPhoneCase(String, boolean, boolean, boolean, pres.auxiliary.work.n.tcase.InformationCase.PhoneType...)}方法 + */ + @Test + public void addPhoneCaseTest_All() { + ic.addPhoneCase("测试控件17", true, false, false, InformationCase.PhoneType.values()); + } + + /** + * 测试{@link InformationCase#addIDCardCase(String, boolean, boolean, boolean)}方法 + */ + @Test + public void addIDCardCaseTest() { + ic.addIdCardCase("测试控件18", true, false, false); + } + + /** + * 测试{@link InformationCase#addSelectboxCase(String, boolean, boolean, boolean)}方法 + */ + @Test + public void addSelectboxCaseTest_HasEmpty() { + ic.addSelectboxCase("测试控件19", true, true, true); + } + + /** + * 测试{@link InformationCase#addSelectboxCase(String, boolean, boolean, boolean)}方法 + */ + @Test + public void addSelectboxCaseTest_NotEmpty() { + ic.addSelectboxCase("测试控件20", true, false, false); + } + + /** + * 测试{@link InformationCase#addRadioButtonCase(String)}方法 + */ + @Test + public void addRadioButtonCaseTest() { + ic.addRadioButtonCase("测试控件22"); + } + + /** + * 测试{@link InformationCase#addCheckboxCase(String, boolean)}方法 + */ + @Test + public void addCheckboxCaseTest() { + ic.addCheckboxCase("测试控件22", true); + } + + /** + * 测试{@link InformationCase#addDateCase(String, boolean, boolean, boolean)}方法 + */ + @Test + public void addDateCaseTest_1() { + ic.addDateCase("测试控件22", true, true, true); + } + + /** + * 测试{@link InformationCase#addDateCase(String, boolean, boolean, boolean)}方法 + */ + @Test + public void addDateCaseTest_2() { + ic.addDateCase("测试控件23", false, false, false); + } + + /** + * 测试{@link InformationCase#addStartDateCase(String, String, boolean, boolean, boolean)}方法 + */ + @Test + public void addStartDateCaseTest() { + ic.addStartDateCase("测试控件23", "测试控件24", false, false, false); + } + + /** + * 测试{@link InformationCase#addEndDateCaseTest(String, String, boolean, boolean, boolean)}方法 + */ + @Test + public void addEndDateCaseTest() { + ic.addEndDateCase("测试控件24", "测试控件23", true, true, true); + } + + /** + * 测试{@link InformationCase#addUploadFileCase(String, boolean, boolean, boolean, int, int, int, pres.auxiliary.work.n.tcase.InformationCase.UploadFileType, pres.auxiliary.work.n.tcase.InformationCase.FileRuleType...)}方法 + */ + @Test + public void addUploadFileCaseTest_1() { + ic.addUploadFileCase("测试控件25", true, true, true, 10, 2, 10, UploadFileType.FILE, FileRuleType.CSV, FileRuleType.XLS, FileRuleType.XLSX); + } + + /** + * 测试{@link InformationCase#addUploadFileCase(String, boolean, boolean, boolean, int, int, int, pres.auxiliary.work.n.tcase.InformationCase.UploadFileType, pres.auxiliary.work.n.tcase.InformationCase.FileRuleType...)}方法 + */ + @Test + public void addUploadFileCaseTest_2() { + ic.addUploadFileCase("测试控件26", false, false, false, 0, 0, 10, UploadFileType.IMAGE); + } + + /** + * 测试{@link InformationCase#addUploadFileCase(String, boolean, boolean, boolean, int, int, int, pres.auxiliary.work.n.tcase.InformationCase.UploadFileType, pres.auxiliary.work.n.tcase.InformationCase.FileRuleType...)}方法 + */ + @Test + public void addUploadFileCaseTest_3() { + ic.addUploadFileCase("测试控件27", true, true, true, -1, 2, 0, UploadFileType.IMAGE); + } + + /** + * 测试{@link InformationCase#addUploadFileCase(String, boolean, boolean, boolean, int, int, int, pres.auxiliary.work.n.tcase.InformationCase.UploadFileType, pres.auxiliary.work.n.tcase.InformationCase.FileRuleType...)}方法 + */ + @Test + public void addUploadFileCaseTest_4() { + ic.addUploadFileCase("测试控件28", false, false, false, -1, 2, 2, UploadFileType.IMAGE); + } + + /** + * 测试{@link InformationCase#addUploadFileCase(String, boolean, boolean, boolean, int, int, int, pres.auxiliary.work.n.tcase.InformationCase.UploadFileType, pres.auxiliary.work.n.tcase.InformationCase.FileRuleType...)}方法 + */ + @Test + public void addUploadFileCaseTest_5() { + ic.addUploadFileCase("测试控件29", false, false, false, -1, -1, -1, UploadFileType.IMAGE); + } }