【问题标题】:How to get different values for a Parameter in Run time?如何在运行时获取参数的不同值?
【发布时间】:2017-05-18 06:36:59
【问题描述】:

我需要使用主题阅读电子邮件,主题的值在 3 种不同场景中在运行时传递。

  1. 执行触发带有@Test 主题的电子邮件的操作在 CSV 文件 - class1.java 中给出
  2. 执行触发带有主题的电子邮件的操作在 @Parameters 功能 - class2.java 中给出
  3. 主题值直接从属性文件 - selenium.properties 中读取。

我能够从 class1 和属性文件中读取主题内容。现在,我想读取从 XML 文件传递​​的 @Parameter 值。

下面是我当前的代码。

//Reads Subject from properties file.
if(subject==null||subject.isEmpty()) {    
     //Reads Subject from given CSV file.
     reader = new CSVReader(new FileReader(fileName), CoreConstants.CSV_FILE_SEPARATOR, CoreConstants.DEFAULT_QUOTE_CHARACTER, CoreConstants.CSV_SKIP_HEADER_LINE);
     if((record = reader.readNext()) != null) {
         subject = record[18];                   
     }
}

Class1 & 2 包含@Test 方法,执行时会触发邮件。但是,上面的方法是在不包含@Test注解的辅助类中。

请帮助我阅读场景 2 中主题的值。

【问题讨论】:

    标签: java selenium-webdriver parameter-passing testng


    【解决方案1】:

    基本上,答案在testng docs

    如果您使用简单的参数值,您可以在 testng.xml 中指定它们:

    @Parameters({ "first-name" })
    @Test
    public void testSingleString(String firstName) {
      System.out.println("Invoked testString " + firstName);
      assert "Cedric".equals(firstName);
    }
    

    在此代码中,我们指定 Java 方法的参数 firstName 应接收名为 first-name 的 XML 参数的值。这个 XML 参数在 testng.xml 中定义:

    <suite name="My suite">
      <parameter name="first-name"  value="Cedric"/>
      <test name="Simple example">
      <-- ... -->
    

    【讨论】:

    • 谢谢!!...但是阅读电子邮件的方法没有用@Test注释。我编辑了我的问题以清楚地传达。
    • @Bala @Test 方法可以将预期的参数传递给您的 utils 方法。
    猜你喜欢
    • 2014-01-10
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    相关资源
    最近更新 更多