自动化测试框架搭建
作者:网络转载 发布时间:[ 2015/5/14 11:07:53 ] 推荐标签:软件测试
Login 实现Test Action的不同方式
目前可以有两种方式来实现Login这个的TestAction,相信在以后的使用过程中可能这两种种方式都有可能会用到:
·完全写代码实现,和之前代码没有太多区别,的区别是元素定位内容不会在TestAction代码中出现了完全,从而实现了和页面元素的解耦
·使用Annonation 来实现测试步骤
实现例子
代码实现可以分为三步:
·构建page
·构建和业务相关的TestAction
·构建测试类
构建Page 类
public class LoginPage extends BasePage { @FindBy(id= "usercode") private InputBox userCode; @FindBy(id="password") private InputBox password; @FindBy(id="msg") private WebElement msg;
...... 省略 get set 方法
}
构建TestAction
继承BaseWebTestAction
public class LoginActionByHand extends BaseWebTestAction { public LoginActionByHand(WebDriver driver, TestData testData) { super(driver, testData);
} @Override public void execute() { //完全手动写TestAction LoginPage page = HtmlElementsLoader.createPageObject(driver,LoginPage.class);
page.getUserCode().input(testData.get("userCode")); //or convert the test data to a model to get the value page.getPassword().input(testData.get("password"));
page.getSubmit();
}
}
还有一种方式来些TestAction是: 使用TestActionBuilder来写,可以给Builder添加多个TestAction,这个主要是组合多个TestAction使用的
public class LoginActionSuperExecutor extends BaseWebTestAction {
public LoginActionSuperExecutor(WebDriver driver, TestData testData) {
super(driver, testData);
}
@Override public void execute() {//使用ActionBuilder // build 可以添加多个TestAction, 这样达到了组合不同Action的目的 TestActionsBuilder.build(new LoginActionByHand(driver,testData)).
addAfterActions(new TestAction() { // add AfterAction的意思是可以在有些步骤后面添加一些特殊处理 @Override public void execute() {
driver.get("http://gzz.dooioo.com/workspace");
}
}).execute(); // 也可以在后自己写一些特殊处理 driver.get("http://gzz.dooioo.com/workspace");
}
}
构建测试类
public class LoginFlowByExecutorTest extends BaseWebTest { User user = new User("110863","abcd1235"); @Test public void testLoginAction(){
LoginActionByHand flow1 = new LoginActionByHand(driver,user);
flow1.execute();
System.out.println("end of test");
} @Test public void testLoginAction_getTestActionName(){
Assert.assertEquals(new LoginFlowByExecutor(driver,user).getTestActionName(),"LoginFlowByExecutor");
}
}
注解方式来构建TestAction
在Page类上面添加注解,构建某个流程 格式如下例:
UIActions 表示有多个UIAction的注解,每一个UIAction表示一个TestAction
每一个UIAction实际表示一个TestAction 下面这个例子中登陆,登陆2可以认为是两个不同的操作流程 elementActionDescription描述的是操作元素的动作,userCode input表示在元素userCode上面进行输入,输入什么,其实是TestData中userCode的值 对于InputBox来说,动作input是Inputbox的默认动作,所以在登陆2里面省略了,所有省略动作的藐视都是用默认动作进行处理
@UIActions(
actions = { @UIAction(processName = "登陆",
elementActionDescription = {"userCode input","password input","submit click"}), @UIAction(processName = "登陆2",elementActionDescription = { "userCode","userCode ","submit " })
}
) public class LoginPageAnnotationWithUIAction extends BasePage { @FindBy(id= "usercode") private InputBox userCode; @FindBy(id="password") private InputBox password; @FindBy(id="msg") private HtmlElement msg; public Button getSubmit() { return submit;
} public void setSubmit(Button submit) { this.submit = submit;
} @FindBy(className = "btn_login") private Button submit;
。。。。。。。 省略get/set 方法
}
构建注解方式的TestAction
同样适用TestActionBuilder可以了
public class LoginActionByExecuteUIAction extends BaseWebTestAction { public LoginActionByExecuteUIAction(WebDriver driver, TestData testData) { super(driver, testData);
} @Override public void execute() {
LoginPage page = LoginPage.createPage(LoginPage.class,driver);
AnnotationBasedActionBuilder.executeUIAction(page,"登陆",testData);
}
}
构建测试类
构建测试类的方式和上面构建测试类是其实是一样的
API/WebService 自动化测试
API(接口)数据驱动测试
API(接口)测试,这里主要是指http请求或者是指restful service类型的测试.主要的测试思路是根据API的规格 构造api的请求,然后向服务端发起请求,这样可以得到服务端的请求返回值,进行验证。因此在整个测试过程 中如果构建这个请求是一个关键点,关于构建请求在前面介绍APITest的时候有提到过,可以参考 一下。但是一下的内容是在前文的基础上做了一些封装后,可以写少一点代码来实习API的数据驱动测试
API(接口)测试流程
在做了一些封装之后,api测试包括了以下几个步骤:
·构建一个JSON文件来描述这个API的接口
·构建一个调用这个API的java 类(构建请求)
·构建和API规格说明相匹配的一个外部数据(excel)
·构建测试用例类
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
手工测试与自动化测试的区别如何提升接口自动化测试效率?手动测试和自动化测试的区别自动化测试真实项目工作流程,5个重要阶段自动化测试自行脚本后怎么查看日志?使用AR查看日志方法了解ios自动化测试要知道哪些知识?两种自动化测试工具AutoRunner与Selenium的对比给你一个网站,你如何来做自动化测试的?Web网站测试流程及方法Android自动化测试框架有哪些?有什么用途?什么样的项目适合做自动化?自动化测试人员应具备怎样的能力?为什么要进行自动化测试?自动化测试发展的怎么样了?如何对微信小程序进行自动化测试?自动化测试的行业现状是怎样的?未来的发展方向在哪?自动化测试很难,那么软件测试为什么要坚持自动化呢?关于Selenium自动化测试框架的较佳设计模式关于Selenium自动化测试框架那些你不知道的事

更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南