Testng:将值从XML传递到Java类

时间:2016-06-03 19:31:25

标签: java maven selenium testng

我正在使用TesnNG进行测试。我有一类常量Constant.java

public class Constants {   
    public static final String ID = "myID";
    public static final String PASSWORD = "support1";
    public static final String ENV = "stage";
    public static final String ACCOUNT = "000458";

这些参数会有所不同,取决于帐户和环境。这是一种使用方式,例如Test.xml

<suite name="Regression">
<parameter name="asset" value="0"/>
<test name="Test3">
    <classes>
        <class name="UnTrusted.Login"/>
        <class name="NegativeLogin"/>
    </classes>
</test>

并将参数从XML传递到Constant.java,其中包含以下值:idpasswordenvaccount#

我知道你可以使用@Test将参数从XML传递到@Parameters,但我没有传入@Test注释。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

只是分享我的想法.. 1)您可以改为创建一个简单的setter/getter类。 2)使用UnmarshallingXML转换为JAVA 3)生成对象后,可以使用生成的对象设置setter/getter类。

希望有所帮助..

答案 1 :(得分:0)

如果您将其视为需求变更,则可能。您可以使用DataProviders修改您的方法。

// 在您的数据类XYZ

@DataProvider(name = "LoginData")
public static Object[][] dataProviderLogin(ITestContext context) throws Exception {
    String testData = context.getCurrentXmlTest().getLocalParameter(); //to get the params for *test*
    String suiteData = context.getCurrentXmlTest().getXmlSuite().getParameters(); //to get the params for *suite*
.... other data to be added to the test
}

在您的测试类中

@Test(priority = 1, dataProvider = "LoginData",dataProviderClass=XYZ.class)
public static void testLogin(String param)   // arguments vary based on what data providers return
{