基於Excel和Selenium的JUnit UI測試框架

平時開發測試的時候都是手動測試,可是對於一些重複的基礎測試,好比輸入格式是否正確,選項是否可選,顯示的文字提示是否正確,均可以用Selenium自動化測試代替,鑑於日常是使用Excel來管理測試用例數據的,因此此次想把Selenium和Excel結合起來,構建一個JUnit UI測試框架。java

不過JUnit自己並不支持多線程,而在瀏覽器的操做自己是須要耗時很多,加上測試用例數據成百上千,若是隻使用一個線程的話效率是很低的,並且,不像業務接口測試,這種UI自動化測試中有可能會由於各類各樣的偏差而致使測試不經過,遇到這種偏差的時候就須要重試,但JUnit自己也不支持重試,綜上所述,咱們須要使用@RunWith對JUnit進行擴展。git

擴展後的測試流程以下:github

  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爲測試結果測試

啓用多線程和重試功能時的例子以下ui

@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的方法便可。code

相關文章
相關標籤/搜索