您的位置:首页 > 产品设计 > UI/UE

基于Excel和Selenium的JUnit UI测试框架

2017-10-16 00:00 615 查看
平时开发测试的时候都是手动测试,但是对于一些重复的基础测试,比如输入格式是否正确,选项是否可选,显示的文字提示是否正确,都可以用Selenium自动化测试代替,鉴于平常是使用Excel来管理测试用例数据的,所以这次想把Selenium和Excel结合起来,构建一个JUnit UI测试框架。

不过JUnit本身并不支持多线程,而在浏览器的操作本身是需要耗时不少,加上测试用例数据成百上千,如果只使用一个线程的话效率是很低的,而且,不像业务接口测试,这种UI自动化测试中有可能会因为各种各样的误差而导致测试不通过,遇到这种误差的时候就需要重试,但JUnit本身也不支持重试,综上所述,我们需要使用@RunWith对JUnit进行扩展。

扩展后的测试流程如下:

读取Excel中所有的测试用例数据

取出一条测试用例数据

启动浏览器

执行具体的测试逻辑

若测试不通过,并且未达到重试次数,则回到第4步,若已达到重试次数, 则截图

关闭浏览器,若仍有未取出的测试用例数据,则回到第2步

输出测试结果到Excel中

扩展后的JUnit已经包含了1,2,3,5,6,7这六个步骤,开发人员只需要实现第4步的具体的测试逻辑即可。

框架实现代码在https://github.com/hpq86zllw/junit-ui-test-framework

使用默认配置时的例子如下

@RunWith(UITestRunner.class)
public class SearchTest1 {

@Test
@InputAndOutput(inputArgs = { "/Test_Case.xls" }, outputArgs = { "/Test_Case_Result.xls" })
public void testSearch(Map<String, Object> testCaseData) {

WebDriver driver = Browser.getDriver();

Index index = PageFactory.initElements(driver, Index.class);
index.get();
index.search(testCaseData);

Result result = PageFactory.initElements(driver, Result.class);
result.check(testCaseData);

}

}

Test_Case.xls为测试用例数据,Test_Case_Result.xls为测试结果

启用多线程和重试功能时的例子如下

@RunWith(UITestRunner.class)
public class SearchTest2 {

@Test
@InputAndOutput(inputArgs = { "/Test_Case.xls" }, outputArgs = { "/Test_Case_Result.xls" })
@RuntimeSetting(threadNum = 2, retryNum = 1)
public void testSearch(Map<String, Object> testCaseData) {

WebDriver driver = Browser.getDriver();

Index index = PageFactory.initElements(driver, Index.class);
index.get();
index.search(testCaseData);

Result result = PageFactory.initElements(driver, Result.class);
result.check(testCaseData);

}

}

threadNum为线程数,retryNum为重试次数

其他例子可以查看README.md,编写完测试逻辑后按照平时启动JUnit的方法即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Selenium JUnit
相关文章推荐