当前位置: 首页 > 知识库问答 >
问题:

如何在测试启动之前修改testNG DataProvider数组对象(在Saucelabs中命名测试)

张丁雷
2023-03-14

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

然后,我需要实例化一个活动的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注释的设置中。

共有1个答案

常子濯
2023-03-14

结果表明,数组必须是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]);
    }
}
 类似资料:
  • 使用Jest测试深层嵌套属性是否存在的最佳方法是什么。尝试以我想要的特定对象为目标将导致未定义的错误,因为其父对象不存在: 我应该以某种方式将这些连接起来,这样我就可以首先测试对象的存在,然后测试内部对象的存在吗?相当于在if语句中做这样的事情 或者像这样在一个元素上进行多个测试时,是否应该有单独的测试? 我也尝试过: 这有点管用?更好,但是需要我在测试文件中声明这个非常大的对象。这种非常深入的比

  • 问题内容: 我正在运行docker image tensorflow:1.1.0。我通过在本地克隆tensorflow对象检测api github并为我的docker连接到该文件夹​​添加了它。我正在尝试重新创建他们的宠物示例。 我相信我所有的代码和代码都在正确的地方。但是,当我尝试重新训练时,tensorflow在开始训练之前会自行杀死,但不会出现任何问题或错误。 我想我有东西出没了,但是没有任

  • 假设我有一个项集合,例如,我需要检查是否有任何项从包装类中被修改,例如,任何项的属性的值通过setter被更改: 或者另一个问题,选择的答案建议使用标记,每次修改属性时都需要升起该标记。然而,我的类实际上会变得更脏,矛盾的是,我需要修改几十个修改Item属性的方法。 有没有其他方法,最好是透明的?

  • 问题内容: 假设我需要制作一系列String []对象。 我知道,如果我想创建一个名为“ test”的字符串数组来容纳3个字符串,我可以这样做 String []测试=新的String [3]; 但是,假设我需要制作一系列这样的数组,并且希望将它们命名为1,2、3、4、5 …等等。但是我需要很多,但我不知道要需要。 我如何达到类似的效果: 这将创建5个名为1到5的字符串数组。基本上,我希望能够创建

  • Gradle的Groovy插件声称它支持联合编译,允许自由混合和匹配Groovy和Java代码,并在两个方向上都有依赖关系“。 但是,我不认为这适用于测试代码。 我在使用位于中的类。 当尝试使用Gradle构建时,我会遇到如下错误: 请注意,是一个尚未编译的Groovy类(在Gradle输出中,我可以看到它在尝试之前没有运行,因为前者依赖于后者)。 我能够使用groovy-eclipse插件与Ma

  • 我正在学习如何在PHPUnit中进行测试,我想知道在命名PHPUnit测试方法时是否有“最佳实践”。它们的名称是否应该与正在测试的方法相同?例如这种方法 命名 或者名称应该更具描述性?