如何在testng中使用两个类之间的方法依赖?

时间:2014-12-17 11:54:27

标签: selenium methods automation dependencies testng

我有2个测试类,一个用于测试网站的注册功能,另一个用于登录。

public class TestResister{
@test
public void testSignup(){
}
}

public class TestLogin{
@test
public void testLoginUser(){
}
}

我想在运行testLoginUser()函数时自动调用testSignup()。

3 个答案:

答案 0 :(得分:0)

不确定我的问题是否正确,但您只需要调用该方法即可。

public class TestRegister{
    public void testSignup(){
    }
}


public class TestLogin{
    public void testLoginUser(){
        TestRegister.testSignup();
    }
}

或者

public class TestLogin{
    public void testLoginUser(){
        TestRegister tstregister = new TestRegister();
        tstregister.testSignup();
    }
}

答案 1 :(得分:0)

是的,这是可能的。如下所示:

@Test(priority = 1)
public void testMethod1(){
//some code
}
@Test(priority = 2)
public void testMethod2(){
//some code
}

this。优先级较低将首先执行。但是,任何条件,***测试依赖*都不是最佳实践。每个测试都应该设计为独立执行。如果优先级为1的测试失败,请考虑优先级为2的测试结果。

答案 2 :(得分:0)

您的问题不是很明确,如果注册已经完成怎么办?它会失败吗?

我认为您正在寻找以下属性。

您可以使用@Test注释中的dependsOnMethods或dependsOnGroups属性。

有两种依赖关系:

  • 硬依赖。你依赖的所有方法必须运行和 你成功了。如果您的帐号中至少发生一次故障 依赖关系,你不会被调用并标记为跳过 报告。
  • 软依赖。您将始终按照您的方法运行 依赖于,即使其中一些失败了。这对你很有用 只是想确保您的测试方法在某个特定的情况下运行 但是他们的成功并不取决于成功与否 其他。通过添加" alwaysRun = true"来获得软依赖性。在 你的@Test注释。

以下是硬依赖的示例:

@Test
public void signup() {}

@Test(dependsOnMethods = { "singup" })
public void login() {}

在这种情况下,如果单击失败,登录将不会运行。如果您仍想运行登录,请添加" alwaysRun = true"。然后登录将运行,无论注册成功与否。 有关详情,请查看http://testng.org/doc/documentation-main.html