我应该使用@Before @After与TestNG注释吗?的webdriver

时间:2015-04-14 19:42:35

标签: selenium webdriver testng

我的问题是,如果我应该使用@beforemethod @beforetest @aftertest这样的TestNG注释,框架是什么?或者只是在每个类中都有代码?

例如,为什么我会用这些@before注释来调用firefox驱动程序?我可以理解,然后我可以重用代码并只调用一个chrome驱动程序,但大多数时候在chrome或其他浏览器上运行相同的测试需要进行一些修改才能通过,我仍然可以复制整个代码。 / p>

将代码或代码直接调用到我用于@test的类中是不是有意义?

另外,@ afterTest为什么我会在那里打电话?当我可以在每个班级打电话时?

使用这些注释是否有任何优点/缺点,而不是直接在类中编写代码?

例如,我有这个文件运行一些测试:

package FireFox;

import org.testng.annotations.Test;

public class TestGroup {
//////////////////////////////////////////////////
    @Test(priority=1)
    public void SessionTasks() {
    Session_Tasks call = new Session_Tasks();
    call.sessionTasks();
    }  
////////////////////////////////////////////////    
    @Test(priority=2)
    public void SignUp () {
    Signup call = new Signup();
    call.signup();
    }
//////////////////////////////////////////////////
    @Test(priority=3)
    public void Signup_PostQ() {
    Signup_PostQs call = new Signup_PostQs();
    call.signup_postq();
    }
//////////////////////////////////////////////////
    @Test(priority=4)
    public void Sign_In() {
    SignIn call = new SignIn();
    call.signIn();
    }
//////////////////////////////////////////////////
    @Test(priority=5)
    public void Sign_In_PostQ() {
    SignIn_PostQs call = new SignIn_PostQs();
    call.signIn_postq();
    }
//////////////////////////////////////////////////
    @Test(priority=6)
    public void SessionConnect() {
    Session_Connect call = new Session_Connect();
    call.sessionConnect();
    }
//////////////////////////////////////////////////
    @Test(priority=7)
    public void TutorMenu() {
    Tutor_Menu call = new Tutor_Menu();
    call.Tutor_menu();
}

}

所有操作都包含在每个类中,打开特定浏览器,导航到URL,并在测试结束时关闭浏览器。为什么我要在注释之前使用@之前的任何一个,而不是在每个类中包含所有内容?

2 个答案:

答案 0 :(得分:1)

我认为您希望使用@Before@After注释的主要原因是您的初始登录和浏览器测试清理未显示在您的报告中。如果您将它们保留在报告中,那么您最终会在报告中显示您正在反复测试相同的代码路径。通过将浏览器创建和拆解放在外部@Configuration方法中,可以避免此测试路径重复。

此外,如果您遵循在DataProvider中生成WebDriver实例的推荐方法,而DataProvider又将驱动程序实例作为参数传递给测试方法,那么您可以使用@BeforeMethod注释来获取在调用测试方法之前保持该驱动程序并在每个测试方法的主体内使用驱动程序之前执行任何必要的准备步骤。这是JUnit无法做到的TestNG的一个被忽视的功能。当然,这样做可以让你在逐个方法的基础上运行多线程,并提高整个测试套件的速度。

答案 1 :(得分:1)

使用 @Before @After 或测试代码中的任何其他注释的自由完全适用于测试人员。

  • 在测试代码中使用注释的最基本原因是它 使您的代码 易于阅读 易于理解 用于其他 测试人员。 提供干净的代码
  • 使用@ Before,@ After,@ BeforeClass或其他许多注释 帮助您减少再次编写重复代码的工作和时间 再次。它是一种 智能方式,可以在您的测试中重复相同的操作 执行时没有实际写入
  • 测试用例可以 更容易分组 ,从而导致 高效 并行测试。
  • 在Test Suites中非常有效地使用此类注释。在
    测试套件我们通常会遇到依赖关系。这种依赖性 各种测试用例之间由 Pre-conditons和
    编写 后置条件
    即可。这些先决条件和后期条件我们可以 通过使用这样的注释,可以非常有效地处理。

虽然使用这样的注释不是经验法则,但在测试代码中需要时使用它们是一种很好的做法。  希望这能解决您在框架中使用注释的困惑或疑问。