自动化测试~模块篇

  • 介绍

本篇介绍自动化测试的模块划分。

模块划分、用例切割、函数以及类的封装,从某个角度来看,都可以提高代码的可复用性。代码只有可复用了,才能一步步地减轻自动化测试人员的工作量。如果,还没有在一个项目中写了超过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,请访问“素人派”。

上一篇:寒假安卓app开发学习记录(2)


下一篇:Spring WebFlow 远程代码执行漏洞CVE-2017-4971 绿盟科技发布安全威胁通告