完成测试用例模板移植

This commit is contained in:
彭宇琦 2020-11-13 19:16:56 +08:00
parent 10f742c5a4
commit f36fd8dba3
6 changed files with 829 additions and 100 deletions

View File

@ -170,7 +170,7 @@
<rank id='1' value="1" />
</ranks>
<preconditions>
<precondition id='1' value="已在*{操作类型}*账号界面" />
<precondition id='1' value="已在*{操作类型}*界面" />
<precondition id='2' value="除密码外,其他信息均正确填写" />
</preconditions>
<steps>
@ -189,7 +189,7 @@
</excepts>
</case>
<case name="addCodeRegisterOrForgetCase">
<case name="captchaOprateCase">
<titles>
<title id='1' value="通过不同的验证码进行*{操作类型}*操作" />
</titles>

View File

@ -1,139 +1,175 @@
<?xml version="1.0" encoding="GBK"?>
<?xml version="1.0" encoding="UTF-8"?>
<cases project="Video">
<case name="addPlayVideoCase">
<title value="播放/暂停*{videoType}*" />
<keyword value="播放/暂停" />
<rank value="1" />
<titles>
<title value="播放/暂停*{视频类型}*" />
</titles>
<keys>
<key value="播放/暂停" />
</keys>
<ranks>
<rank value="1" />
</ranks>
<preconditions>
</preconditions>
<steps>
<step id="1" value="在*{videoType}*播放状态下点击播放按钮" />
<step id="2" value="在*{videoType}*播放状态下点击暂停按钮或单击*{videoType}*画面,再点击播放按钮" />
<step id="3" value="在*{videoType}*播放状态下点击停止按钮,再点击播放按钮" />
<step id="4" value="在*{videoType}*播放状态下点击暂停按钮,再点击停止按钮" />
<step id="5" value="在*{videoType}*播放状态下一直按住键盘上的空格按键" />
<step id="6" value="在*{videoType}*未播放状态下点击暂停、停止按钮" />
<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="*{videoType}*播放不受影响"/>
<expectation id="2" value="*{videoType}*暂停,*{videoType}*画面定格在按下按钮的瞬间,再次按下播放时*{videoType}*会从暂停的位置继续播放"/>
<expectation id="3" value="*{videoType}*停止,*{videoType}*画面定格在按下按钮的瞬间或画面消失,再次按下播放时*{videoType}*会重新播放"/>
<expectation id="4" value="*{videoType}*停止,*{videoType}*画面定格在按下按钮的瞬间或画面消失,再次按下播放时*{videoType}*会重新播放"/>
<expectation id="5" value="系统只执行一次按下空格按键的操作,或*{videoType}*在不断地暂停/播放,但页面不会崩溃"/>
<expectation id="6" value="*{videoType}*不会播放"/>
</expectations>
<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="*{视频类型}*不会播放"/>
</excepts>
</case>
<case name="addVideoScreenshotCase">
<title value="对*{videoType}*进行截图" />
<keyword value="*{videoType}*,截图" />
<rank value="2" />
<titles>
<title value="对*{视频类型}*进行截图" />
</titles>
<keys>
<key value="*{视频类型}*,截图" />
</keys>
<ranks>
<rank value="2" />
</ranks>
<preconditions>
</preconditions>
<steps>
<step id="1" value="在*{videoType}*播放状态下点击截图按钮" />
<step id="2" value="在*{videoType}*暂停状态下点击截图按钮" />
<step id="3" value="在*{videoType}*停止状态下点击截图按钮" />
<step id="4" value="在*{videoType}*未播放状态下点击截图按钮" />
<step id="1" value="在*{视频类型}*播放状态下点击截图按钮" />
<step id="2" value="在*{视频类型}*暂停状态下点击截图按钮" />
<step id="3" value="在*{视频类型}*停止状态下点击截图按钮" />
<step id="4" value="在*{视频类型}*未播放状态下点击截图按钮" />
</steps>
<expectations>
<expectation id="1" value="弹出截图成功提示,截图的画面是按下截图按钮瞬间的画面"/>
<expectation id="2" value="弹出截图成功提示,截图的画面是按下当前*{videoType}*的画面"/>
<expectation id="3" value="截图失败,弹出未保存或*{videoType}*未播放的提示"/>
<expectation id="4" value="截图失败,弹出未保存或*{videoType}*未播放的提示"/>
</expectations>
<excepts>
<except id="1" value="弹出截图成功提示,截图的画面是按下截图按钮瞬间的画面"/>
<except id="2" value="弹出截图成功提示,截图的画面是按下当前*{视频类型}*的画面"/>
<except id="3" value="截图失败,弹出未保存或*{视频类型}*未播放的提示"/>
<except id="4" value="截图失败,弹出未保存或*{视频类型}*未播放的提示"/>
</excepts>
</case>
<case name="addVideoAdvanceCase">
<title value="快进/快退*{videoType}*" />
<keyword value="*{videoType}*,快进,快退" />
<rank value="2" />
<titles>
<title value="快进/快退*{视频类型}*" />
</titles>
<keys>
<key value="*{视频类型}*,快进,快退" />
</keys>
<ranks>
<rank value="2" />
</ranks>
<preconditions>
</preconditions>
<steps>
<step id="1" value="在*{videoType}*播放状态下点击快进或快退按钮" />
<step id="2" value="在*{videoType}*暂停状态下点击快进或快退按钮" />
<step id="3" value="在*{videoType}*刚开始播放时只播放1-2秒点击快退按钮" />
<step id="4" value="在*{videoType}*快结束时剩余1-2秒点击快进按钮" />
<step id="5" value="在*{videoType}*未播放状态下点击快进或快退按钮" />
<step id="6" value="一直按住键盘的右或左方向键" />
<step id="7" value="正常修改默认的跳跃秒数后点击快进或快退按钮" />
<step id="8" value="修改秒数为小于1的数字后点击快进或快退按钮" />
<step id="9" value="修改秒数为大于*{videoType}*剩余播放时间的数字后点击快进按钮" />
<step id="10" value="不输入秒数或输入非数字字符后点击快进或快退按钮" />
<step id="1" value="在*{视频类型}*播放状态下点击快进或快退按钮" />
<step id="2" value="在*{视频类型}*暂停状态下点击快进或快退按钮" />
<step id="3" value="在*{视频类型}*刚开始播放时只播放1-2秒点击快退按钮" />
<step id="4" value="在*{视频类型}*快结束时剩余1-2秒点击快进按钮" />
<step id="5" value="在*{视频类型}*未播放状态下点击快进或快退按钮" />
<step id="6" value="一直按住键盘的右或左方向键" />
<step id="7" value="正常修改默认的跳跃秒数后点击快进或快退按钮" />
<step id="8" value="修改秒数为小于1的数字后点击快进或快退按钮" />
<step id="9" value="修改秒数为大于*{视频类型}*剩余播放时间的数字后点击快进按钮" />
<step id="10" value="不输入秒数或输入非数字字符后点击快进或快退按钮" />
</steps>
<expectations>
<expectation id="1" value="*{videoType}*进度条向前或向后跳跃,*{videoType}*画面前进或后退对应的时间后继续播放"/>
<expectation id="2" value="*{videoType}*进度条向前或向后跳跃,*{videoType}*画面前进或后退对应的时间后仍暂停播放"/>
<expectation id="3" value="*{videoType}*重新播放"/>
<expectation id="4" value="*{videoType}*停止播放"/>
<expectation id="5" value="快进或快退无效"/>
<expectation id="6" value="进度条一直向前或向后跳跃,直至进度条到达端点时按住方向键将无效"/>
<expectation id="7" value="*{videoType}*跳跃相应的秒数"/>
<expectation id="8" value="提示跳跃秒数不允许小于1或者*{videoType}*不跳跃"/>
<expectation id="9" value="提示跳跃秒数不允许超过*{videoType}*的播放时间,或者*{videoType}*停止播放"/>
<expectation id="10" value="提示输入正确的数字,或者*{videoType}*不跳跃"/>
</expectations>
<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="8" value="提示跳跃秒数不允许小于1或者*{视频类型}*不跳跃"/>
<except id="9" value="提示跳跃秒数不允许超过*{视频类型}*的播放时间,或者*{视频类型}*停止播放"/>
<except id="10" value="提示输入正确的数字,或者*{视频类型}*不跳跃"/>
</excepts>
</case>
<case name="addVideoSpeedCase">
<title value="快放/慢放*{videoType}*" />
<keyword value="*{videoType}*,快放,慢放" />
<rank value="2" />
<titles>
<title value="快放/慢放*{视频类型}*" />
</titles>
<keys>
<key value="*{视频类型}*,快放,慢放" />
</keys>
<ranks>
<rank value="2" />
</ranks>
<preconditions>
</preconditions>
<steps>
<step id="1" value="在*{videoType}*播放状态下点击快放或慢放按钮" />
<step id="2" value="在*{videoType}*暂停状态下点击快放或慢放按钮" />
<step id="3" value="在*{videoType}*未播放状态下点击快放或慢放按钮" />
<step id="4" value="依次选择不同的倍率后,点击快放或慢放按钮" />
<step id="1" value="在*{视频类型}*播放状态下点击快放或慢放按钮" />
<step id="2" value="在*{视频类型}*暂停状态下点击快放或慢放按钮" />
<step id="3" value="在*{视频类型}*未播放状态下点击快放或慢放按钮" />
<step id="4" value="依次选择不同的倍率后,点击快放或慢放按钮" />
</steps>
<expectations>
<expectation id="1" value="*{videoType}*播放仍在播放,但其播放速度明显比默认播放速度快或慢"/>
<expectation id="2" value="*{videoType}*播放开始播放,但其播放速度明显比默认播放速度快或慢"/>
<expectation id="3" value="按钮点击无效"/>
<expectation id="4" value="*{videoType}*的播放速度较点击前的播放速度有明显的变化"/>
</expectations>
<excepts>
<except id="1" value="*{视频类型}*播放仍在播放,但其播放速度明显比默认播放速度快或慢"/>
<except id="2" value="*{视频类型}*播放开始播放,但其播放速度明显比默认播放速度快或慢"/>
<except id="3" value="按钮点击无效"/>
<except id="4" value="*{视频类型}*的播放速度较点击前的播放速度有明显的变化"/>
</excepts>
</case>
<case name="addVideoProgressBarCase">
<title value="拖动进度条" />
<keyword value="进度条" />
<rank value="2" />
<titles>
<title value="拖动进度条" />
</titles>
<keys>
<key value="进度条" />
</keys>
<ranks>
<rank value="2" />
</ranks>
<preconditions>
</preconditions>
<steps>
<step id="1" value="在*{videoType}*播放状态下向前或向后拖动进度条" />
<step id="2" value="在*{videoType}*暂停状态下向前或向后拖动进度条" />
<step id="3" value="在*{videoType}*未播放状态下点击快放或慢放按" />
<step id="4" value="停止画线后缩放地图" />
<step id="5" value="将进度条拉至端点后继续向同方向拉动" />
<step id="1" value="在*{视频类型}*播放状态下向前或向后拖动进度条" />
<step id="2" value="在*{视频类型}*暂停状态下向前或向后拖动进度条" />
<step id="3" value="在*{视频类型}*未播放状态下点击快放或慢放按" />
<step id="4" value="停止画线后缩放地图" />
<step id="5" value="将进度条拉至端点后继续向同方向拉动" />
</steps>
<expectations>
<expectation id="1" value="*{videoType}*跳跃到进度条相对应的时间上继续播放"/>
<expectation id="2" value="*{videoType}*跳跃到进度条相对应的时间上仍暂停播放"/>
<expectation id="3" value="*{videoType}*跳从进度条相对应的时间上开始播放"/>
<expectation id="4" value="进度条不会超出端点"/>
</expectations>
<excepts>
<except id="1" value="*{视频类型}*跳跃到进度条相对应的时间上继续播放"/>
<except id="2" value="*{视频类型}*跳跃到进度条相对应的时间上仍暂停播放"/>
<except id="3" value="*{视频类型}*跳从进度条相对应的时间上开始播放"/>
<except id="4" value="进度条不会超出端点"/>
</excepts>
</case>
<case name="addFullScreenPlayCase">
<title value="全屏播放*{videoType}*" />
<keyword value="全屏*{videoType}*" />
<rank value="2" />
<titles>
<title value="全屏播放*{视频类型}*" />
</titles>
<keys>
<key value="全屏*{视频类型}*" />
</keys>
<ranks>
<rank value="2" />
</ranks>
<preconditions>
</preconditions>
<steps>
<step id="1" value="点击全屏播放按钮" />
<step id="2" value="双击*{videoType}*画面" />
<step id="3" value="再次双击*{videoType}*画面" />
<step id="4" value="点击退出全屏播放按钮" />
<step id="1" value="点击全屏播放按钮" />
<step id="2" value="双击*{视频类型}*画面" />
<step id="3" value="再次双击*{视频类型}*画面" />
<step id="4" value="点击退出全屏播放按钮" />
</steps>
<expectations>
<expectation id="1" value="*{videoType}*全屏播放"/>
<expectation id="2" value="*{videoType}*退出全屏播放"/>
<expectation id="3" value="*{videoType}*全屏播放"/>
<expectation id="4" value="*{videoType}*退出全屏播放"/>
</expectations>
<excepts>
<except id="1" value="*{视频类型}*全屏播放"/>
<except id="2" value="*{视频类型}*退出全屏播放"/>
<except id="3" value="*{视频类型}*全屏播放"/>
<except id="4" value="*{视频类型}*退出全屏播放"/>
</excepts>
</case>
</cases>

View File

@ -4,6 +4,17 @@ import java.io.File;
import java.util.Arrays;
import java.util.List;
/**
* <p><b>文件名</b>MapCase.java</p>
* <p><b>用途</b>
* 提供生成与地图相关测试用例的方法
* </p>
* <p><b>编码时间</b>2020年04月05日下午10:03:54</p>
* <p><b>修改时间</b>2020年04月05日下午10:03:54</p>
* @author 彭宇琦
* @version Ver1.0
*
*/
public class MapCase extends Case {
/**
* 通过测试用例模板库的xml配置文件来构造MapCase对象
@ -127,14 +138,14 @@ public class MapCase extends Case {
* @param graphs 图形类型
* @return 类本身
*/
public Case mapGraphSignCase(String signName, boolean isMultiple, GraphType...graphs) {
public Case mapGraphSignCase(String signName, boolean isMultiple, GraphType...graphTypes) {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "mapGraphSignCase";
//转换输入限制为集合类型
List<GraphType> graphRules = Arrays.asList(graphs);
List<GraphType> graphRules = Arrays.asList(graphTypes);
if (graphRules.size() != 0) {
String graphRulesText = "";
for (GraphType graphRule : graphRules) {

View File

@ -0,0 +1,352 @@
package pres.auxiliary.work.testcase.templet;
import java.io.File;
/**
* <p><b>文件名</b>UserCase.java</p>
* <p><b>用途</b>
* 提供生成与用户登录注册忘记密码等相关操作测试用例的方法
* </p>
* <p><b>编码时间</b>2020年11月12日上午7:24:27</p>
* <p><b>修改时间</b>2020年11月12日上午7:24:27</p>
* @author 彭宇琦
* @version Ver1.0
*
*/
public class UserCase extends Case {
/**
* 通过测试用例模板库的xml配置文件来构造MapCase对象
* @param configXmlFile 用例模板库的xml文件对象
*/
public UserCase(File configXmlFile) {
super(configXmlFile);
}
/**
* 用于生成正常登录相关的测试用例
* @return 类本身
*/
public Case rightLoginCase() {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addRightLoginCase";
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
relevanceAddData(caseName, ALL, ALL);
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
/**
* 用于生成异常登录相关的测试用例
* @return 类本身
*/
public Case errorLoginCase() {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addErrorLogkinCase";
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
relevanceAddData(caseName, ALL, ALL);
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
/**
* 用于生成通过输入不同的验证码进行登录相关的测试用例
* @return 类本身
*/
public Case captchaLoginCase() {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addCaptchaCase";
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
relevanceAddData(caseName, ALL, ALL);
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
/**
* 用于生成通过不同权限的用户名与密码进行登录相关的测试用例
* @param isSparateLogin 不同权限是否需要分页登录
* @return 类本身
*/
public Case loginAuthorityCase(boolean isSparateLogin) {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addLoginAuthorityCase";
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
if (isSparateLogin) {
relevanceAddData(caseName, ALL, ALL);
} else {
relevanceAddData(caseName, "1", "1");
}
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
/**
* 用于生成注册用户名相关的测试用例
* @param isPhone 是否为手机号码注册
* @return 类本身
*/
public Case usernameRegisterCase(boolean isPhone) {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addUsernameRegisterCase";
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
relevanceAddData(caseName, "1", "1");
relevanceAddData(caseName, "2", "2");
if (isPhone) {
relevanceAddData(caseName, "3", "3");
relevanceAddData(caseName, "4", "4");
relevanceAddData(caseName, "5", "5");
} else {
relevanceAddData(caseName, "6", "6");
}
relevanceAddData(caseName, "7", "7");
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
/**
* 用于生成通过用户名进行忘记密码操作相关的测试用例
* @return 类本身
*/
public Case usernameForgetCase() {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addUsernameForgetCase";
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
relevanceAddData(caseName, ALL, ALL);
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
/**
* 用于生成与密码操作注册或忘记密码操作相关的测试用例
* @param oprateType 操作类型{@link OprateType}枚举
* @return 类本身
*/
public Case passwordRegisterOrForgetCase(OprateType oprateType) {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addPasswordRegisterOrForgetCase";
//添加替换的词语
wordMap.put(WordType.OPRATE_TYPE.getName(), oprateType.getName());
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
relevanceAddData(caseName, ALL, ALL);
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
/**
* 用于生成与手机验证码操作注册或忘记密码操作相关的测试用例
* @param oprateType 操作类型{@link OprateType}枚举
* @param isPast 是否存在过期时间
* @return 类本身
*/
public Case captchaOprateCase(OprateType oprateType, boolean isPast) {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "captchaOprateCase";
//添加替换的词语
wordMap.put(WordType.OPRATE_TYPE.getName(), oprateType.getName());
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
relevanceAddData(caseName, "1", "1");
relevanceAddData(caseName, "2", "2");
relevanceAddData(caseName, "3", "3");
relevanceAddData(caseName, "4", "4");
relevanceAddData(caseName, "5", "5");
if (isPast) {
relevanceAddData(caseName, "6", "6");
}
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
/**
* 用于生成修改密码相关的测试用例
* @return 类本身
*/
public Case amendPasswordCase() {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addAlterPasswordCase";
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
relevanceAddData(caseName, ALL, ALL);
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
/**
* <p><b>文件名</b>UserCase.java</p>
* <p><b>用途</b>枚举在预设测试用例中需要被替换的词语</p>
* <p><b>编码时间</b>2020年3月27日上午7:40:48</p>
* <p><b>修改时间</b>2020年3月27日上午7:40:48</p>
* @author 彭宇琦
* @version Ver1.0
*
*/
private enum WordType {
/**
* 标记点名称
*/
OPRATE_TYPE("操作类型"),
;
/**
* 存储需要替换的单词名称
*/
private String name;
/**
* 初始化枚举值
* @param name 枚举的名称
*/
private WordType(String name) {
this.name = name;
}
/**
* 返回需要替换的单词的名称
* @return 需要替换的单词的名称
*/
public String getName() {
return name;
}
}
/**
* <p><b>文件名</b>UserCase.java</p>
* <p><b>用途</b>
* 用于枚举UserCase用例类相关的操作
* </p>
* <p><b>编码时间</b>2020年11月12日上午7:53:43</p>
* <p><b>修改时间</b>2020年11月12日上午7:53:43</p>
* @author 彭宇琦
* @version Ver1.0
*
*/
public enum OprateType {
/**
* 注册
*/
REGISTER("注册"),
/**
* 忘记密码
*/
FORGET_PASSWORD("忘记密码"),
;
/**
* 操作名称
*/
private String name;
private OprateType(String name) {
this.name = name;
}
/**
* 返回操作名称
* @return 操作名称
*/
public String getName() {
return name;
}
}
}

View File

@ -0,0 +1,208 @@
package pres.auxiliary.work.testcase.templet;
import java.io.File;
/**
* <p><b>文件名</b>VideoCase.java</p>
* <p><b>用途</b>
* 生成生成与视频播放相关的测试用例
* </p>
* <p><b>编码时间</b>2020年11月13日上午1:13:07</p>
* <p><b>修改时间</b>2020年11月13日上午1:13:07</p>
* @author 彭宇琦
* @version Ver1.0
*
*/
public class VideoCase extends Case {
/**
* 用于标记
*/
public static final String VIDEO_TYPE = "视频类型";
/**
* 通过测试用例模板库的xml配置文件来构造MapCase对象
* @param configXmlFile 用例模板库的xml文件对象
*/
public VideoCase(File configXmlFile) {
super(configXmlFile);
}
/**
* 该方法用于生成视频播放相关的测试用例
* @param isSpace 是否允许按下空格暂停/播放
* @return 类本身
*/
public Case playVideoCase(boolean isSpace) {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addPlayVideoCase";
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
relevanceAddData(caseName, "1", "1");
relevanceAddData(caseName, "2", "2");
relevanceAddData(caseName, "3", "3");
relevanceAddData(caseName, "4", "4");
relevanceAddData(caseName, "6", "6");
if (isSpace) {
relevanceAddData(caseName, "5", "5");
}
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
/**
* 该方法用于生成对视频进行截图相关的测试用例
* @return 类本身
*/
public Case videoScreenshotCase() {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addVideoScreenshotCase";
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
relevanceAddData(caseName, ALL, ALL);
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
/**
* 该方法用于生成视频快进快退相关的测试用例
* @param isDirection 是否允许按下键盘的方向键
* @param isInputSec 是否允许修改秒数
* @return 类本身
*/
public Case videoAdvanceCase(boolean isDirection, boolean isInputSec) {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addVideoAdvanceCase";
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
relevanceAddData(caseName, "1", "1");
relevanceAddData(caseName, "2", "2");
relevanceAddData(caseName, "3", "3");
relevanceAddData(caseName, "4", "4");
relevanceAddData(caseName, "5", "5");
if (isDirection) {
relevanceAddData(caseName, "6", "6");
}
if (isInputSec) {
relevanceAddData(caseName, "7", "7");
relevanceAddData(caseName, "8", "8");
relevanceAddData(caseName, "9", "9");
relevanceAddData(caseName, "10", "10");
}
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
/**
* 该方法用于生成视频快放慢放相关的测试用例
* @param isSelect 是否允许用户选择倍率
* @return 类本身
*/
public Case videoSpeedCase(boolean isSelect) {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addVideoSpeedCase";
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
relevanceAddData(caseName, "1", "1");
relevanceAddData(caseName, "2", "2");
relevanceAddData(caseName, "3", "3");
if (isSelect) {
relevanceAddData(caseName, "4", "4");
}
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
/**
* 该方法用于生成对视频进度条操作相关的测试用例
* @return 类本身
*/
public Case videoProgressBarCase() {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addVideoProgressBarCase";
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
relevanceAddData(caseName, ALL, ALL);
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
/**
* 该方法用于生成视频全屏播放和退出全屏播放操作相关的测试用例
* @return 类本身
*/
public Case videoFullScreenPlayCase() {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addFullScreenPlayCase";
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//添加步骤与预期
relevanceAddData(caseName, ALL, ALL);
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getLabelText(caseName, LabelType.KEY, "1"));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, "1"));
return this;
}
}

View File

@ -0,0 +1,122 @@
package pres.auxiliary.work.testcase.templet;
import java.io.File;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import pres.auxiliary.tool.file.excel.CreateExcelFile;
import pres.auxiliary.work.testcase.file.JiraTestCaseWrite;
import pres.auxiliary.work.testcase.templet.MapCase.GraphType;
/**
* <p><b>文件名</b>MapCasetcw.addCase(test.java</p>
* <p><b>用途</b>
* 测试{@link MapCase}
* </p>
* <p><b>编码时间</b>2020年11月13日下午7:11:46</p>
* <p><b>修改时间</b>2020年11月13日下午7:11:46</p>
* @author 彭宇琦
* @version Ver1.0
*
*/
public class MapCaseTest {
/**
* 指向生成的测试用例文件
*/
File testCaseFile = new File("src/test/java/pres/auxiliary/work/testcase/templet/测试用例.xlsx");
/**
* 指向测试用例文件字段配置文件
*/
File templetXml = new File("ConfigurationFiles/CaseConfigurationFile/FileTemplet/JiraCaseFileTemplet/jira测试用例导入模板.xml");
/**
* 指向与InformationCase使用到的预设测试用例配置文件
*/
File browseListCase = new File("ConfigurationFiles/CaseConfigurationFile/CaseTemplet/Map.xml");
MapCase test = new MapCase(browseListCase);
/**
* 用于写入用例到文件中
*/
JiraTestCaseWrite tcw;
@BeforeClass
public void start() throws Exception {
CreateExcelFile tct = new CreateExcelFile(templetXml, testCaseFile);
//为方便演示则允许覆盖用例文件
tct.setCoverFile(true);
//生成用例文件
tct.create();
//初始化
tcw = new JiraTestCaseWrite(templetXml, testCaseFile);
//设置每条测试用例中值都一样的字段
tcw.setFieldValue("设计者", "彭宇琦");
tcw.setFieldValue("状态", "2");
}
@AfterClass
public void outputInformation() throws Exception {
//写入用例
tcw.writeFile();
//打开用例文件夹
java.awt.Desktop.getDesktop().open(testCaseFile.getParentFile());
java.awt.Desktop.getDesktop().open(testCaseFile);
}
@AfterMethod
public void endCase() {
tcw.end();
}
/**
* 用于测试{@link MapCase#rangeFindingCase()}方法<br>
*/
@Test
public void rangeFindingCaseTest() {
tcw.addCase(test.rangeFindingCase());
}
/**
* 用于测试{@link MapCase#mapPointCase(String)}方法<br>
* 预期<br>
*
*/
@Test
public void mapPointCaseTest() {
tcw.addCase(test.mapPointCase("大楼"));
}
/**
* 用于测试{@link MapCase#mapSearchInformationCase(String, String)}方法<br>
* 预期<br>
*
*/
@Test
public void mapSearchInformationCaseTest() {
tcw.addCase(test.mapSearchInformationCase("名称", "地址"));
}
/**
* 用于测试{@link MapCase#carLocusPlaybackCase()}方法<br>
* 预期<br>
*
*/
@Test
public void carLocusPlaybackCaseTest() {
tcw.addCase(test.carLocusPlaybackCase());
}
/**
* 用于测试{@link MapCase#mapGraphSignCase(String, boolean, pres.auxiliary.work.testcase.templet.MapCase.GraphType...)}方法<br>
* 预期<br>
*
*/
@Test
public void mapGraphSignCaseTest() {
tcw.addCase(test.mapGraphSignCase("围栏", true, GraphType.CIRCLE, GraphType.RECTANGLE));
}
}