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