我应该在TestNG中使用@Before@After注释吗?网络驱动程序



我的问题是,就框架而言,我应该使用@beforemethod@beforetest@materest这样的TestNG注释吗?或者只是在每个类中都有代码?

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

那么,将代码或直接调用代码到我用于@test的类中难道没有意义吗?

还有,对于@afterTest,我为什么要在那里叫teardown?什么时候我可以在每节课上都这样称呼它?

使用这些注释而不是直接在类中编写代码有什么优点/缺点吗?

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

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,并在测试结束时关闭浏览器。为什么我要使用任何@before和@after注释,而不是将所有内容都包含在每个类中?

测试代码中使用@Before@After的自由度或任何其他注释完全符合测试人员的要求。

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

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

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

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

最新更新