代码之家  ›  专栏  ›  技术社区  ›  NarendraR TheSociety

单一静态方法是否会导致并行执行中的测试失败-selenium

  •  0
  • NarendraR TheSociety  · 技术社区  · 6 年前

    我正在使用Selenium自动化测试用例。我正在使用TestNG以并行模式执行testcase,它会导致一些随机测试失败。如果我在非并行模式下执行相同的测试,那么所有测试都将通过。

    here 代码中的静态资源可能会导致问题。

    public static String formatString(String loc, String val) {
    
            return String.format(getBundle().getString(loc), getBundle().getString(val));
        }
    
        public static QAFWebElement getQAFExtendedWebElement(String loc, String str) {
    
            return new QAFExtendedWebElement(
                    String.format(getBundle().getString(loc), getBundle().getString(str)));
        }
    
        public static void assertResult(String actual, String expected) {
    
            assertTrue(actual.contains(expected),
                    "FAILED : Actual : " + actual + " Expected : " + expected,
                    "PASSED : Actual : " + actual + " Expected : " + expected);
        }
    

    1 回复  |  直到 6 年前
        1
  •  2
  •   virusrocks    6 年前

    这肯定会导致随机故障。在您的流程中只有一个静态资源实例。这意味着试图访问此静态资源的每个线程都可能遇到另一个线程试图访问相同静态资源的情况。

    public synchronized static void assertResult(String actual, String expected) {
    
        assertTrue(actual.contains(expected),
                "FAILED : Actual : " + actual + " Expected : " + expected,
                "PASSED : Actual : " + actual + " Expected : " + expected);
    }