【问题标题】:How to modify testNG DataProvider array objects before test launch (naming tests in Saucelabs)如何在测试启动前修改 testNG DataProvider 数组对象(在 Saucelabs 中命名测试)
【发布时间】:2020-01-14 21:17:10
【问题描述】:

我在 Saucelabs 中运行测试,需要在运行时设置一个名为“name”的功能,它是测试方法的名称。必须对来自 DataProvider 的每个 DesiredCapabilities 对象执行此操作。

然后,我需要实例化一个实时的 RemoteWebDriver 对象,以便在包含此功能的情况下运行测试。

@DataProvider(name = "environments")
public static Object[] environments()
{
    EnvironmentParser environmentParser = new EnvironmentParser();
    CapabilitiesFactory capabilitiesFactory = new CapabilitiesFactory(environmentParser);
    return capabilitiesFactory.makeCapabilities("./src/test/resources/webEnvironments.json");
}

@BeforeMethod
public void setUp(Method method, DesiredCapabilities[] capabilities) throws MalformedURLException
{
    // Name the test in Saucelabs
    for(int i = 0; i < capabilities.length; i++)
    {
        capabilities[i].setCapability("name", method.getName());
        driver = new RemoteWebDriver(new URL(URL), capabilities[i]);
    }
}

尝试运行代码时出错:

只能将 ITestContext、XmlTest、Method、Object[]、ITestResult 之一注入 @BeforeMethod 注释的 setUp。

【问题讨论】:

    标签: java selenium webdriver testng dataprovider


    【解决方案1】:

    原来数组必须是 Object[] 类型

    下面的代码按预期工作:

    @BeforeMethod
    public void setUp(Method method, Object[] capabilities) throws MalformedURLException
    {
        // Name the test in Saucelabs and create the driver
        for(int i = 0; i < capabilities.length; i++)
        {
            DesiredCapabilities desiredCapabilities = (DesiredCapabilities) capabilities[i];
            desiredCapabilities.setCapability("name", method.getName());
            driver = new RemoteWebDriver(new URL(URL), (DesiredCapabilities) capabilities[i]);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-09
      相关资源
      最近更新 更多