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

仅在执行套件之前和之后无法使用dockerFile运行测试文件,没有调用之前、之后和测试方法函数

淳于恺
2023-03-14

testng.xml

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" parallel="tests" thread-count="2">
    <parameter name="env" value="dev_env"/>
    <parameter name="system" value="local"/>
    <listeners>
        <listener class-name="com.testlisteners.TestListeners"/>       
    </listeners>
    <test name="FireFoxTests">
        <parameter name="browser" value="firefox"/>
        <classes>
            <class
                    name="com.tests.HomePageTest">
                <methods>
                    <include name= "testMultiSelectDropdown"/>
                </methods>
            </class>
        </classes>
    </test>
    <test name="ChromeTests">
        <parameter name="browser" value="chrome"/>
        <classes>
            <class name="com.tests.HomePageTest">
                <methods>
                    <include name= "testMultiSelectDropdown"/>
                </methods>
           </class>           
       </classes>
    </test>
</suite>

底座

@BeforeSuite
    @Parameters({"env", "system"})
    public void preSetup(String env, String system) throws IOException {
        this.env = env;
        this.system = system;
        logger.info("Before Suite is called...");
        oneInstance.add(KEYS.ENVIRONMENT, env);
        oneInstance.add(KEYS.SYSTEM, system);
    }



@BeforeMethod(alwaysRun = true)
    @Parameters({"browser"})
    public void setup(String browser, Method method) throws IOException {
        logger.info("Before Method is called..");
        String toLowercaseBrowser = browser.toLowerCase();
        this.browser = toLowercaseBrowser;
        logger.info(toLowercaseBrowser + " browser will be launched.");
        ExtentTestManager.startTest(method.getName(), method.getName() + " - " + browser.toUpperCase());

        if (oneInstance.getAsString(KEYS.SYSTEM.name()).equalsIgnoreCase("local")) {
            switch (toLowercaseBrowser) {
                case "chrome":
                    WebDriverManager.chromedriver().setup();
                    driver.set(new ChromeDriver(setChromeOptions()));
                    getDriver().manage().window().fullscreen();
                    getDriver().get(setAppURL());
                    break;
                case "firefox":
                    WebDriverManager.firefoxdriver().setup();
                    driver.set(new FirefoxDriver());
                    getDriver().manage().window().fullscreen();
                    getDriver().get(setAppURL());
                    break;
                default:
                    throw new InvalidArgumentException("browser : " + browser + " is invalid.");
            }
        } else {
                instantiateRemoteWebDriver(toLowercaseBrowser);
                getDriver().manage().window().fullscreen();
                getDriver().get(setAppURL());
        }

    }

我已经使用maven在libs包中复制了所有的依赖项,并且我已经验证了selenium-docker.jar和selenium-docker-tests.jar中存在所有的main和test编译类

为创建selenium-docker.jar和selenium-docker-tests.jar而运行的命令:MVN clean package-dskiptests

用于创建Docker图像的命令:Docker build-t selenium_docker:1.0.

运行测试的命令:docker运行selenium_docker:1.0

输出

[DEBUG]2020-01-24 16:50:48.989[main]一个实例-一个实例为null intialize....

[信息]2020-01-24 16:50:49.123[主]基础测试-在套件被调用之前...

在输出中,我们可以看到在Suite被调用之前······但是在调用方法之前…失踪了

暂时还没有答案

 类似资料:
  • 如果你希望在每次运行 Puppet 之前执行命令,可以在配置文件中使用 prerun_command 配置。 类似地,你也可以使用 postrun_command 配置运行 Puppet 之后需要执行的命令。 这种机制为 Puppet 与其他软件的集成提供了强大的钩子,甚至可以触发其他机器上的事件。 prerun 和 postrun 命令必须能成功运行(即其返回的状态码为 0),否则 Puppet

  • 我想在测试套件中的每个测试之前和之后运行其他设置和拆卸检查。我看过赛程,但不确定它们是否是正确的方法。我需要在每次测试之前运行设置代码,并且需要在每次测试后运行拆卸检查。 我的用例是检查没有正确清理的代码:它会留下临时文件。在我的设置中,我将检查文件,在拆解中我也会检查文件。如果有额外的文件,我希望测试失败。

  • 我有一个测试方法,看起来像: 并行工作使用可关闭的资源来控制生命周期,该资源在方法中关闭: 问题是:方法是在完成工作之前和等待超时到期之前调用的。 怎么可能?那我该怎么解决呢?

  • 方法和测试位于一个类中,例如 下面是我的testng.xml的示例,其中包含了包含功能测试的包 UPD.post修改后的代码中包含AfterTest。我只使用before/aftermethod注释

  • 问题内容: 有一种简单的方法可以在调用之前和之后调用JavaScript动作,例如,我想在后备bean中调用 之前 和 之后 调用JavaScript动作: 添加多个元素似乎不起作用(也许应该吗?!),例如 仅被调用。 问题答案: 使用属性。它必须指向一个回调函数引用(所以不要包括括号!): 实际的回调函数如下所示(JSF会自己提供参数):

  • 我们使用maven surefire插件并行运行测试。由配置文件指定。 我希望在surefire并行运行我的测试之前,每次maven的整个执行过程中只能运行一次方法。我怎么能那么做?