如何在@ test.enabled属性中给出运行时值

时间:2017-02-02 11:05:55

标签: java selenium-webdriver annotations automated-tests testng

我在java中使用带有TestNG的selenium webdriver。

为了执行测试套件,我想在@Test(enabled=true/false)中添加运行时值。 但启用属性在开始执行之前只接受常量(true / false)。

有没有办法控制@Test方法来决定是否执行?

3 个答案:

答案 0 :(得分:1)

Thanks for your efforts, but please find attached link which ll help you to achieve what I want to

您必须通过IAnnotationTransformer接口覆盖@test方法。

由于 达瓦尔

答案 1 :(得分:0)

达瓦尔,我认为你认为这是错误的方式;看看你想要达到的目标。当然你可以有一个全局范围的var,比如hasTheScriptReachedAPointToIssueSessionID?但在您的情况下,您可能希望查看testng方法依赖项(@Test注释是testClass中的方法/测试步骤)。所以这是一个例子:

@Test (priority=1)
public void login(){

//do the login stuff
}


@Test (priority=2, dependsOnMethods="login")
public void clickAccountBtn(){      

//go to account 
}


@Test (priority=3, dependsOnMethods="clickAccountBtn")
public void editPassword() {            

//edit pass
}

正如您所看到的,这里有2个主题可以帮助您调节测试流程。优先级和依赖关系。优先级有助于testNG来规范执行顺序(首先是什么,最后是什么),而依赖关系可以帮助您快速失败(即如果您未能登录则跳过其余步骤,因为没有必要尝试clickOnTheAccountButton)。希望这是有道理的,如果没有,请告诉我。

你可以在这里找到更多: TestNG Doc

祝你好运

答案 2 :(得分:0)

是的,有一种替代方法可以决定您要执行某种方法的天气

  • testing.xml您可以使用<exclude>标记,请参阅以下示例

    <test name="sample_Test" >
        <classes>
            <class name="ClassOneTest">
             <methods>
                  <exclude name="methodOne" />
             </methods>
            </class>
            <class name="ClassTwoTest"/>
        </classes>
    </test>