【问题标题】:Why do my automated tests fail when run together, but pass individually?为什么我的自动化测试在一起运行时会失败,但单独通过?
【发布时间】:2021-08-27 18:44:19
【问题描述】:

我是使用 Java 和 TestNG 进行并行测试的新手。

这是我的 testng.xml 文件的 syxtax 的样子...

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="TestNG" parallel="methods" thread-count="2">
    <listeners>
        <listener class-name="framework.adapters.AutomationTestListener"/>
        <listener class-name="framework.adapters.AppiumListener"></listener>
    </listeners>
    <test name="Test Suite">
        <packages>
            <package name="org.abc.tests"/>
        </packages>
    </test>
</suite>

这是我试图运行的两个@Test,但是当它们运行时,其中一个测试的步骤会侵入另一个。因此,基本上,它们在单独运行时会通过,但是当我尝试并行运行它们时,它们从每个测试的步骤将交叉到另一个。

这是两个测试...

@Test(groups = {"Regression", "TC_111"}, description = "TC_111")
    public void padTestSubmission() {
        SubmissionTestData testData = new SubmissionTestData();
        SummaryScreen summaryScreen = onStartScreen()
                .clickLoginButton()
                .loginWithUser(UserCache.MAIN_USER)
                .clickSkipOnAndroid()
                .clickOnBottomIcon(BottomMenu.NEW_TEST, MaterialTypeScreen.class)
                .clickOnMaterialType("Pad")
                .fillTestInfoAndSubmit(testData)
                .fillClaimInfoAndSubmit(testData, UserCache.MAIN_USER)
                .addPhotoAndVerifyMetaData("Top of Sample")
                .submitWithPeriod(SAME_DAY_PERIOD);
        verifySubmissionSuccessful(summaryScreen, testData.getClaimNumber(), testData.getDamageLocation());
    }

    @Test(groups = {"Regression", "TC_222"}, description = "TC_222")
    public void carpetTestSubmission() {
        SubmissionTestData testData = new SubmissionTestData();
        SummaryScreen summaryScreen = onStartScreen()
                .clickLoginButton()
                .loginWithUser(UserCache.MAIN_USER)
                .addPhotoAndVerifyMetaData("Side 1 of Carpet")
                .addLastPhotoAndGoToReviewScreenAndVerifyMetaData("Side 2 of Carpet")
                .verifyMetaData("Side 3")
                .submitWithPeriod(SAME_DAY_PERIOD);
        verifySubmissionSuccessful(summaryScreen, testData.getClaimNumber(), testData.getDamageLocation());
    }

【问题讨论】:

    标签: testng appium parallel-testing


    【解决方案1】:

    这仅在两个线程之间共享 webdriver 时发生。将每个驱动程序放在一个线程本地对象中就可以了。

    【讨论】:

    • 感谢您回复@niharika_neo。但是,我正在使用 TestNG 和 Browserstack,我不认为 ThreadLocal 对象可以使用它。你对此有什么想法吗?
    猜你喜欢
    • 2012-02-17
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    相关资源
    最近更新 更多