閱讀1001 返回首頁    go 阿裏雲 go 技術社區[雲棲]


自動化測試~數據源

  • 介紹

本篇介紹框架PhoenixAutotest中的數據源模塊以及在項目中的使用示例。閱讀本文的前提,是您已經完成了基礎入門篇,如果您錯過了請點擊入門介紹

所謂數據源,即把在測試過程中所要錄入的數據集中地放在一個地方(源),而不是散落在腳本(代碼)中。這樣的好處顯而易見,隻能清晰,維護簡便。為了能盡可能地滿足各種實際情況,框架不僅提供了幾種(XML、Excel等)內置的實現,用戶還可以根據自己的情況來做訂製、擴展。

  • 支持的類型

目前框架支持三種格式的數據源文件,分別是:xml、yaml、excel。xml默認已經在框架中包含,其他的類型,需要另外在pom.xml中添加依賴。

另外,更加重要的是,框架支持您添加任意喜歡的文件格式。

通過下麵的教程,您可以把數據中腳本中抽離出來,使得腳本更容易維護。但缺點是,下麵的例子都是固定的數據,如果需要動態數據的話,請參考框架的參數化章節。

  • XML

如果您使用的開發工具為Eclipse的話,建議先根據《Eclipse智能提示-XML》來配置XSD。

location為https://surenpi.com/schema/datasource/autotest.web.framework.datasource.xsd,key為datasource.surenpi.com。配置好後,根據下麵的步驟來添加xml格式的數據源:

生成的xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<suren:dataSources xmlns:suren="https://datasource.surenpi.com"
	xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="https://datasource.surenpi.com
	https://surenpi.com/schema/datasource/autotest.web.framework.datasource.xsd "
	pagePackage="demo.page">
	<suren:dataSource pageClass="BaiduPage">
		<suren:page>
			<suren:field data="surenpi.com" name="keyword" />
		</suren:page>
	</suren:dataSource>
</suren:dataSources>

Page類修改如下:

package demo.page;

import org.suren.autotest.web.framework.annotation.AutoAttrLocator;
import org.suren.autotest.web.framework.annotation.AutoDataSource;
import org.suren.autotest.web.framework.annotation.AutoPage;
import org.suren.autotest.web.framework.selenium.WebPage;

import com.surenpi.autotest.datasource.DataSourceConstants;
import com.surenpi.autotest.webui.ui.Button;
import com.surenpi.autotest.webui.ui.Text;

@AutoPage(url = "https://baidu.com",
    startPage = true)
@AutoDataSource(resource = "baidu-data.xml",
    type = DataSourceConstants.DS_TYPE_XML)
public class BaiduPage extends WebPage
{
    @AutoAttrLocator(tagName = "input", name = "id", value = "kw")
    private Text   keyword;
    @AutoAttrLocator(tagName = "input", name = "value", value = "百度一下")
    private Button searchBut;

    public Text getKeyword()
    {
        return keyword;
    }

    public void setKeyword(Text keyword)
    {
        this.keyword = keyword;
    }

    public Button getSearchBut()
    {
        return searchBut;
    }

    public void setSearchBut(Button searchBut)
    {
        this.searchBut = searchBut;
    }
}

測試類如下:

package demo;

import java.io.IOException;

import org.suren.autotest.web.framework.annotation.AutoApplication;
import org.suren.autotest.web.framework.settings.Phoenix;
import org.suren.autotest.web.framework.util.ThreadUtil;

import demo.page.BaiduPage;

@AutoApplication
public class BaiduTest
{

    public static void main(String[] args) throws IOException
    {
        Phoenix phoenix = new Phoenix(BaiduTest.class);
//        phoenix.init();
        phoenix.initWithData();

        BaiduPage page = phoenix.getPage(BaiduPage.class);
        page.open();
//        page.getKeyword().fillValue("PhoenixAutotest");
        page.getKeyword().fillValue();
        page.getSearchBut().click();

        ThreadUtil.silentSleep(3000);

        phoenix.close();
    }
}

 

  • Excel

如果要使用Excel格式數據源的話,需要先在pom.xml中添加下麵的依賴:

<!-- https://mvnrepository.com/artifact/com.surenpi.autotest/autotest.datasource.excel -->
<dependency>
	<groupId>com.surenpi.autotest</groupId>
	<artifactId>autotest.datasource.excel</artifactId>
	<version>1.0.0-20170706</version>
</dependency>

然後,編輯Excel數據文件baidu-data.xlsx,按照下圖所示的格式來填入數據(保存在src/main/resources目錄中):

最後修改Page類,啟用yaml配置,重新啟動測試即可:

@AutoPage(url = "https://baidu.com",
    startPage = true)
//@AutoDataSource(resource = "baidu-data.xml",
//    type = DataSourceConstants.DS_TYPE_XML)
//@AutoDataSource(resource = "baidu-data.yaml",
//    type = DataSourceConstants.DS_TYPE_YAML)
@AutoDataSource(resource = "baidu-data.xlsx",
type = DataSourceConstants.DS_TYPE_EXCEL)
public class BaiduPage extends WebPage

注意:sheet的名稱為Page類名(全稱),第一行為列名,從第二行開始就是Page類中的屬性名和數據了。

  • YAML

如果要使用YAML格式數據源的話,需要先在pom.xml中添加下麵的依賴:

<dependency>
	<groupId>com.surenpi.autotest</groupId>
	<artifactId>autotest.datasource.yaml</artifactId>
	<version>1.0.0-20170706</version>
</dependency>

然後,在src/main/resources下添加文件baidu-data.yaml:

demo.page.BaiduPage:
  keyword: phoenix_datasource

最後修改Page類,啟用yaml配置,重新啟動測試即可:

@AutoPage(url = "https://baidu.com",
    startPage = true)
//@AutoDataSource(resource = "baidu-data.xml",
//    type = DataSourceConstants.DS_TYPE_XML)
@AutoDataSource(resource = "baidu-data.yaml",
    type = DataSourceConstants.DS_TYPE_YAML)
public class BaiduPage extends WebPage

 

  • 係列文章

自動化測試,從入門到放棄

自動化測試~模塊篇

自動化測試~數據源

自動化測試~參數化

自動化測試~元素定位

自動化測試框架介紹

  • 參考

本文為原創,如果您當前訪問的域名不是surenpi.com,請訪問“素人派”。

最後更新:2017-08-15 10:02:42

  上一篇:go  自動化測試,從入門到放棄
  下一篇:go  未來零售企業利潤來自於哪裏?如何重構客戶關係?