我的问题是,如果我应该使用@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,并在测试结束时关闭浏览器。为什么我要在注释之前使用@之前的任何一个,而不是在每个类中包含所有内容?
答案 0 :(得分:1)
我认为您希望使用@Before
和@After
注释的主要原因是您的初始登录和浏览器测试清理未显示在您的报告中。如果您将它们保留在报告中,那么您最终会在报告中显示您正在反复测试相同的代码路径。通过将浏览器创建和拆解放在外部@Configuration
方法中,可以避免此测试路径重复。
此外,如果您遵循在DataProvider中生成WebDriver实例的推荐方法,而DataProvider又将驱动程序实例作为参数传递给测试方法,那么您可以使用@BeforeMethod
注释来获取在调用测试方法之前保持该驱动程序并在每个测试方法的主体内使用驱动程序之前执行任何必要的准备步骤。这是JUnit无法做到的TestNG的一个被忽视的功能。当然,这样做可以让你在逐个方法的基础上运行多线程,并提高整个测试套件的速度。
答案 1 :(得分:1)
使用 @Before 或 @After 或测试代码中的任何其他注释的自由完全适用于测试人员。
虽然使用这样的注释不是经验法则,但在测试代码中需要时使用它们是一种很好的做法。 希望这能解决您在框架中使用注释的困惑或疑问。