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


自動化測試~模塊篇

  • 介紹

本篇介紹自動化測試的模塊劃分。

模塊劃分、用例切割、函數以及類的封裝,從某個角度來看,都可以提高代碼的可複用性。代碼隻有可複用了,才能一步步地減輕自動化測試人員的工作量。如果,還沒有在一個項目中寫了超過30個類的話,可以跳過本篇——也許你無法理解複用的重要程度。

本文介紹的自動化測試框架采用Java注解類的方式來進行模塊的劃分,而模塊類可以是一個普通的Java類,也可以實現框架提供的方便使用的接口(EngineAware、WebDriverAware)。而涉及的注解包括:AutoModule、AutoApplication。先給出一個簡單的示例:

import org.suren.autotest.web.framework.annotation.AutoModule;

/**
 * @author suren
 */
@AutoModule(name = "loginModule")
public class UserModule
{
    public void login(){}
    
    public void logout() {}
    
    public void updateProfile() {}
}
  • AutoModule

該注解有三個屬性:name、description、acceptExcetpion。name屬性即模塊的名稱,description為模塊描述信息。這些信息都將會在測試報告中得到體現。

  • AutoApplication

該注解有五個屬性:name、description、customEnvInfo、concernMailList、scanBasePackages。name屬性為獨立測試流程的名稱,將會在測試報告中有體現。

  • EngineAware

如果您的模塊類實現該接口的話,就可以拿到SettingUtil類的實例,以便後續獲取Page類等等操作:

import org.suren.autotest.web.framework.annotation.AutoModule;
import org.suren.autotest.web.framework.core.EngineAware;
import org.suren.autotest.web.framework.settings.SettingUtil;

/**
 * @author suren
 */
@AutoModule(name = "loginModule")
public class UserModule implements EngineAware
{
    private SettingUtil util;
    
    public void login()
    {
        util.getPage("LoginPage");
    }

    public void logout()
    {
        util.getPage("LogoutPage");
    }

    public void updateProfile() {}

    @Override
    public void setEngine(SettingUtil settingUtil)
    {
        this.util = settingUtil;
    }
}
  • WebDriverAware

通過該實現類,就能拿到Selenium框架中的webDriver示例,調用Selenium的原生api:

import org.openqa.selenium.WebDriver;
import org.suren.autotest.web.framework.annotation.AutoModule;
import org.suren.autotest.web.framework.selenium.WebDriverAware;

/**
 * @author suren
 */
@AutoModule(name = "loginModule")
public class UserModule implements WebDriverAware
{
    private WebDriver webDriver;

    public void login(){}

    public void logout() {}

    public void updateProfile() {}

    @Override
    public void setWebDriver(WebDriver webDriver)
    {
        this.webDriver = webDriver;
    }
}
  • 測試流程
import org.suren.autotest.web.framework.annotation.AutoApplication;
import org.suren.autotest.web.framework.selenium.SeleniumEngine;
import org.suren.autotest.web.framework.settings.DriverConstants;
import org.suren.autotest.web.framework.settings.SettingUtil;
import org.suren.autotest.web.framework.util.ThreadUtil;

import java.io.IOException;

/**
 * @author suren
 */
@AutoApplication
public class AnnoTest
{
    public static void main(String[] args) throws IOException
    {
        SettingUtil util = new SettingUtil(AnnoTest.class);
        SeleniumEngine engine = util.getEngine();
        engine.setDriverStr(DriverConstants.DRIVER_CHROME);
        engine.init();

        UserModule module = util.getModule(UserModule.class);
        module.login();
    }
}
  • 係列文章

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

自動化測試~模塊篇

自動化測試~數據源

自動化測試~參數化

自動化測試~元素定位

自動化測試框架介紹

  • 參考

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

最後更新:2017-08-15 10:32:26

  上一篇:go  自動化測試~報告篇
  下一篇:go  自動化測試,從入門到放棄