【问题标题】:how to keep dependency in testng in different classes webdriver如何在不同的类webdriver中保持对testng的依赖
【发布时间】:2015-07-16 02:44:51
【问题描述】:

我有一个场景,比如两个不同的测试类,第二个测试类的结果取决于第一个

公开课class1 { @测试 公共无效 sometest1() { // 一些功能 } }

public class class2
{
    @test
    public void sometest2()
    {
        // some different functionality
    }
}

如果class1结果通过,则这里需要执行class2,否则class2需要失败。(如果没有相同的规定,我需要在class1中执行test1,以便在selenium grid并行运行中始终首先执行)

【问题讨论】:

    标签: java selenium-webdriver testng


    【解决方案1】:

    如前所述,请参考:http://testng.org/doc/documentation-main.html#annotations

    根据上面的 cmets,我希望您尝试使用依赖于另一个类中的方法。在这种情况下,您需要提供完整的路径,即 package.class.method。

    类1:

    public class testingcode {
    
    
    @Test
    public void test1(){
        System.out.println("test1");
    }
    }
    

    类2:

    public class testcase1{
    
    @Test(dependsOnMethods={"com.test.testingcode.test1"})
    public void testcase1result() throws InterruptedException{
    
        System.out.println("test");
    }
    }
    

    从 TestNG.xml 文件运行

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Suite" parallel="none" preserve-order="true">
    <test name="Test">
    <classes>
      <class name="com.test.testingcode"/>
      <class name="com.test.testcase1"/>
    </classes>
    </test> <!-- Test -->
    </suite> <!-- Suite -->
    

    如果它不起作用,请告诉我..

    谢谢你, 壁画

    【讨论】:

      【解决方案2】:

      testng 中有一些注解可以让你实现你想要的流程。 我从未在 testng 上工作过,但我认为您可以在这里找到合适的注释:http://testng.org/doc/documentation-main.html#annotations

      可能是 dependsOnGroups 帮助你

      【讨论】:

        【解决方案3】:

        您可以在 testng 中使用组和依赖项在某些测试执行后运行测试。如果 Class1 测试失败,则没有办法(至少据我所知)无法通过 Class2 测试。

        public class Class1Test {
            @Test(groups="RunFirst")
            public void sometest1() {
                Assert.fail("just to skip the other test");
            }
        }
        
        public class Class2Test {
            @Test(dependsOnGroups="RunFirst")
            public void sometest2() {
                System.out.println("I am running");
            }
        }
        

        这里的 Class2Test 将在 Class1Test 运行后运行,如果 Class1Test 失败将被跳过。

        【讨论】:

          【解决方案4】:

          你可以像下面这样使用dependOnMethods

             @Test
             public void test1() {
                 // Instantiate another case class 
                 // Call your testcase
             }      
          
            @Test(dependsOnMethods="test1")
             public void test2() {
             }
          

          【讨论】:

          • 感谢您的时间,但问题是我们正在使用自定义工具,要更新那里的结果,我们只需要使用不同的类,如果它在同一个类上,上面提出的解决方案将对我有所帮助,但我的情况是不同的类
          • 为此您需要创建一个主要类型的测试类,您需要手动调用其他测试用例。例如,在 test1 中实例化并调用你的测试类,然后在 test2 中调用,依此类推。请参阅我编辑的答案希望这对您有用。如果这有帮助,请投票或接受这个答案
          猜你喜欢
          • 1970-01-01
          • 2011-12-03
          • 1970-01-01
          • 1970-01-01
          • 2023-03-20
          • 1970-01-01
          • 1970-01-01
          • 2023-03-22
          • 2016-03-01
          相关资源
          最近更新 更多