gpt4 book ai didi

java - 如何在@BeforeSuite中使用testNG @Parameters读取资源文件

转载 作者:行者123 更新时间:2023-11-29 09:56:15 25 4
gpt4 key购买 nike

我正在使用 testNGSelenium webdriver2.0

在我的 testNG.xml 中有

<suite data-provider-thread-count="2" name="selenium FrontEnd Test" parallel="false" skipfailedinvocationCounts="false" thread-count="2">
<parameter name="config_file" value="src/test/resources/config.properties/"/>
<test annotations="JDK" junit="false" name="CarInsurance Sanity Test" skipfailedinvocationCounts="false" verbose="2">
<parameter name="config-file" value="src/test/resources/config.properties/"/>
<groups>
<run>
<include name="abstract"/>
<include name="Sanity"/>
</run>
</groups>
<classes>
</classes>
</test>
</suite>

在java文件中

@BeforeSuite(groups = { "abstract" } )
@Parameters(value = { "config-file" })
public void initFramework(String configfile) throws Exception
{
Reporter.log("Invoked init Method \n",true);

Properties p = new Properties();
FileInputStream conf = new FileInputStream(configfile);
p.load(conf);

siteurl = p.getProperty("BASEURL");
browser = p.getProperty("BROWSER");
browserloc = p.getProperty("BROWSERLOC");

}

获取错误为

AILED CONFIGURATION: @BeforeSuite initFramework org.testng.TestNGException: Parameter 'config-file' is required by @Configuration on method initFramework but has not been marked @Optional or defined in

资源文件如何使用@Parameters

最佳答案

看起来像你的 config-file <suite> 处未定义参数等级。有几种方法可以解决这个问题:1.确保<parameter>元素在 <suite> 中定义标签但在任何 <test> 之外:

 <suite name="Suite1" >
<parameter name="config-file" value="src/test/resources/config.properties/" />
<test name="Test1" >
<!-- not here -->
</test>
</suite>

2。如果您希望 Java 代码中的参数具有默认值,尽管它已在 testng.xml 中指定。或不,您可以添加@Optional方法参数注释:

@BeforeSuite
@Parameters( {"config-file"} )
public void initFramework(@Optional("src/test/resources/config.properties/") String configfile) {
//method implementation here
}

编辑(基于发布的 testng.xml):

选项 1:

<suite>
<parameter name="config-file" value="src/test/resources/config.properties/"/>
<test >
<groups>
<run>
<include name="abstract"/>
<include name="Sanity"/>
</run>
</groups>
<classes>
<!--put classes here -->
</classes>
</test>
</suite>

选项 2:

@BeforeTest
@Parameters( {"config-file"} )
public void initFramework(@Optional("src/test/resources/config.properties/") String configfile) {
//method implementation here
}

无论如何,我建议不要让两个参数具有几乎相同的名称、相同的值和不同的范围。

关于java - 如何在@BeforeSuite中使用testNG @Parameters读取资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10651725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com