为啥我的自动化测试在一起运行时会失败,但单独通过?
Posted
技术标签:
【中文标题】为啥我的自动化测试在一起运行时会失败,但单独通过?【英文标题】: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());
【问题讨论】:
【参考方案1】:这仅在两个线程之间共享 webdriver 时发生。将每个驱动程序放在一个线程本地对象中就可以了。
【讨论】:
感谢您回复@niharika_neo。但是,我正在使用 TestNG 和 Browserstack,我不认为 ThreadLocal 对象可以使用它。你对此有什么想法吗?以上是关于为啥我的自动化测试在一起运行时会失败,但单独通过?的主要内容,如果未能解决你的问题,请参考以下文章
当所有单独的测试都通过时,为啥我的 Bazel 测试报告失败?
RSpec capybara:涉及 Ajax 的测试单独通过,但一起运行时失败
为啥水豚功能规格一起运行时会失败,仅对我而言。但分开时通过?