使用Selenium + TestNG + Maven。
我想使用OWASP ZAP自动测试漏洞。为此,我需要在所有测试之前启动ZAProxyScanner - 在所有测试之前执行方法。
public void initZap(){
zapScanner = new ZAProxyScanner(ZAP_PROXYHOST,ZAP_PROXYPORT,ZAP_APIKEY);
zapScanner.clear(); //Start a new session
zapSpider = (Spider)zapScanner;
}
当执行所有功能测试时 - 运行测试以搜索漏洞
@Test
public void scanning() throws ClientApiException{
spiderWithZap();
setAlertAndAttackStrength();
zapScanner.setEnablePassiveScan(true);
scanWithZap();
}
位于一个类中的方法和测试,例如public class TestSecurity
以下是包含功能测试的包的myng.xml示例
<suite name="Chrome" thread-count="1" parallel="tests" configfailurepolicy="continue">
<test name="chrome">
<parameter name="browser" value="chrome"/>
<packages>
<package name="tests.suiteLogIn"></package>
<package name="tests.suiteSettings"></package>
<package name="tests.suiteSearch"></package>
</packages>
</test>
UPD。在其中发布带有AfterTest的修改代码。 我只使用Before / AfterMethod注释
@BeforeMethod(alwaysRun=true)
@Parameters({"browser", "environment"})
public void setUp(@Optional ("firefox") String browser, @Optional ("local") String environment, Method method) throws IOException {
System.out.println("Test name: " + method.getName());
WebDriver driver = getMyDriver(browser, environment);
System.setProperty(ESCAPE_PROPERTY, "false");
}
@AfterMethod(alwaysRun=true)
@Parameters("browser")
public void tearDown(@Optional ("firefox") String browser){
DriverMaster.stopDriver();
}
@BeforeSuite
@Parameters("browser")
public void startZap(@Optional ("firefox") String browser){
if(browser.equals("firefox")){
sec.initZap();
}
}
@AfterSuite
@Parameters("browser")
public void scanZap(@Optional ("firefox") String browser) throws ClientApiException{
if(browser.equals("firefox")){
LoginPage lp = new LoginPage(getDriverInstance()).load();
lp.login("name", "pass");
sec.scanning();
}
}
答案 0 :(得分:6)
您基本上有两个选择:
使用@BeforeSuite和@AfterSuite并将其包含在要运行的文件中或使所有类扩展它
使用ITestListener或ISuiteListener并将设置和拆解代码放入其前后方法中。
对于听众来说,我能看到的一个好处是,如果你想根据一些测试结果进行有条件的拆解(扫描),你也可以控制它。