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

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

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

扩展后的测试流程如下:

  1. 读取Excel中所有的测试用例数据
  2. 取出一条测试用例数据
  3. 启动浏览器
  4. 执行具体的测试逻辑
  5. 若测试不通过,并且未达到重试次数,则回到第4步,若已达到重试次数, 则截图
  6. 关闭浏览器,若仍有未取出的测试用例数据,则回到第2步
  7. 输出测试结果到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的方法即可。

转载于:https://my.oschina.net/u/3707083/blog/1551604

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值