Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我有一个测试方法需要在所有测试中使用,那么如何在selenium的每个测试方法中使用它呢_Java_Selenium_Testng - Fatal编程技术网

Java 我有一个测试方法需要在所有测试中使用,那么如何在selenium的每个测试方法中使用它呢

Java 我有一个测试方法需要在所有测试中使用,那么如何在selenium的每个测试方法中使用它呢,java,selenium,testng,Java,Selenium,Testng,我有两个用户凭据,我必须在一个测试类中使用它们,但测试方法不同。有些测试需要使用x登录详细信息运行,有些测试需要使用y登录详细信息运行,所有这些都在一个套件中。使用数据提供者,我正在使用这些凭证并从另一个类导入,所以如何根据@Test中的要求使用这些凭证 @Title(“当供应商试图提交报价而不回答任何问题时,验证Toast消息。”) @测试(dataProvider=“supplierLogin”,dataProviderClass=LoginCredentials.class) public

我有两个用户凭据,我必须在一个测试类中使用它们,但测试方法不同。有些测试需要使用x登录详细信息运行,有些测试需要使用y登录详细信息运行,所有这些都在一个套件中。使用数据提供者,我正在使用这些凭证并从另一个类导入,所以如何根据@Test中的要求使用这些凭证

@Title(“当供应商试图提交报价而不回答任何问题时,验证Toast消息。”)
@测试(dataProvider=“supplierLogin”,dataProviderClass=LoginCredentials.class)
public void verifyToastMessageSupplierSide(字符串supplierEmail、字符串supplierPassword)引发异常{
Pages.LoginPage().loginButton();
Pages.LoginPage().EmailField(供应商电子邮件);
Pages.LoginPage().PasswordField(供应商密码);
Pages.LoginPage()。单击带有凭据的登录按钮();
睡眠(5000);
Pages.LoggedInHomeScreen()。单击CreateDRFQ();
睡眠(5000);
Pages.LoggedInHomeScreen()。单击SubmitQuote();
字符串toastMessageVerify=Pages.LoggedInHomeScreen().toastMsgVerify();
System.out.println(“Toast消息警告为:“+toastMessageVerify”);
睡眠(5000);
Assert.assertEquals(toastMessageVerify,“有些术语没有回答。请检查您的报价单。”);
} 
@标题(“当供应商回答所有商业条款时,验证提交报价”)
@测试(dataProvider=“supplierLogin”,dataProviderClass=LoginCredentials.class)
public void VerifySubmitQuotesAnsweringAllTerms(字符串供应商电子邮件、字符串供应商密码)后引发异常{
Pages.LoginPage().loginButton();
Pages.LoginPage().EmailField(供应商电子邮件);
Pages.LoginPage().PasswordField(供应商密码);
Pages.LoginPage()。单击带有凭据的登录按钮();
睡眠(5000);
Pages.LoggedInHomeScreen()。单击CreateDRFQ();
睡眠(5000);
Pages.LoggedInHomeScreen()。单击SubmitQuote();
}
这是我的UTIL类:

package com.pers_aip.Zetwerk;
导入java.io.*;
导入java.util.Properties;
公共类TestUtil{
受保护的静态最终文件;
受保护的静态FileInputStream fileInput;
受保护的静态最终属性prop=新属性();
静止的{
file=新文件(“C:\\Users\\Himanshu\\Documents\\Zetwerk\\src\\test\\java\\com\\pers\u aip\\Zetwerk\\LoggedInHomeScreenTest.properties”);
试一试{
fileInput=新的FileInputStream(文件);
}catch(filenotfounde异常){
System.out.println(“警告:其他一些异常”);
}
试一试{
prop.load(文件输入);
}捕获(IOE异常){
System.out.println(“警告:其他一些异常”);
}
}
公共静态字符串getStringFromPropertyFile(字符串键){
返回prop.getProperty(键);
}
}

买家。用户名=buyer3@gmail.com
买家密码=buyer3@123
供应商用户名=supplier3@gmail.com
供应商。密码=supplier3@123
@测试
@参数({“userType”})
public void sampleTest(字符串用户类型)引发异常{
String user=TestUtil.getStringFromPropertyFile(userType+“.username”);
TestUtil.getStringFromPropertyFile(userType+“.password”);
}

对于不同的登录凭据,您可以使用TestNG中的参数

您有两个测试,您正在传递名为userType=QA,DEV的参数 [请参阅TestNG.xml]

当您给予QA时,它将进入QA凭证,当您进入DEV时,它将通过DEV凭证

TestNG.xml

<suite name="Suite">
    <test name="Test">
    <parameter name="userType" value="QA"/>
        <classes>
            <class name="automationFramework.TestngParameters" />
        </classes>
    </test>
    <test name="Dev">
    <parameter name="userType" value="DEV"/>
        <classes>
            <class name="automationFramework.TestngParameters" />
        </classes>
    </test>
</suite>
读取属性文件值的代码

protected static final File file;
protected static FileInputStream fileInput;
protected static final Properties prop =  new Properties();

static{
    file = new File("type your property file location");
    try {
        fileInput = new FileInputStream(file);
    } catch (FileNotFoundException e) {
        throw new CustomException("File not found" +e);
    }
    try {
        prop.load(fileInput);
    } catch (IOException e) {
        throw new CustomException("IO Exception" +e);
    }
}

public static String getStringFromPropertyFile(String key){
    return prop.getProperty(key);
}
在@Test注释上,设置xml文件的userType,并使用如上所述的属性文件逻辑检索值

@Test
@Parameters({"userType"})

public void sampleTest(String userType) throws Exception {
    String user = TestUtils.getStringFromPropertyFile(userType + ".username");
    String pwd = TestUtils.getStringFromPropertyFile(userType + ".password");
}

您还可以根据自己的方便性和灵活性将登录操作保留在@BeforeClass中。

您是只想对登录数据进行操作,还是想对整个功能进行操作?我有一种测试方法需要在所有测试中使用,这是这两种方法中的一种?仅针对登录详细信息,我有两个凭证,我想根据我的要求使用,在一些测试中,我需要一个登录凭证,在其他几个凭证中。@cruisepandey这两个测试方法都需要在不同的测试方法中使用,这非常糟糕,理想情况下,您不应该在测试方法中使用任何测试方法。但是,如果您想对它进行分组,或者您可以使用dependencyI尝试使用您共享的代码,但是我得到了错误。测试被忽略。log4j:WARN找不到记录器(org.apache.commons.beanutils.converters.BooleanConverter)的追加器。log4j:警告请正确初始化log4j系统。log4j:WARN更多信息,请参阅。这看起来像是一条警告消息,如果您遇到任何其他错误,您仍然可以通过引用此消息来清除它。如果是这样的话,通过编辑你的问题来发布。让我们就以下问题进行讨论,我无法回答
@Test
@Parameters({"userType"})

public void sampleTest(String userType) throws Exception {
    String user = TestUtils.getStringFromPropertyFile(userType + ".username");
    String pwd = TestUtils.getStringFromPropertyFile(userType + ".password");
}