【问题标题】:Test Case Structure测试用例结构
【发布时间】:2012-11-29 21:53:59
【问题描述】:

我正在从事一个 Selenium 项目,并且对将手动测试用例转换为 Selenium 测试脚本有一些疑问。

假设我有 2 个测试用例如下, 第一种情况: 1. 导航到 GMAIL 2.使用有效的用户名和密码登录Gmail 3. 检查收件箱是否有新电子邮件。 4. 阅读电子邮件 5. 退出

第二种情况: 1. 导航到 GMAIL 2.使用有效的用户名和密码登录Gmail 3. 撰写电子邮件 4. 发送电子邮件 5. 退出

我的疑惑

  1. 每个测试用例都是 Java 中的一个类吗?
  2. 每个测试步骤都是java中的方法吗?

谢谢,一些意见会对我有所帮助。

【问题讨论】:

    标签: selenium web webdriver driver testng


    【解决方案1】:

    这取决于您的 java-selenium 代码的复杂性和可用性。

    每个测试用例是Java中的一个类吗?

    ---> 在这种情况下,您可以编写一个登录功能的方法,您将在其中将用户名和密码作为参数传递给该方法。只要您需要登录,就可以在任何类(您正在编写的任何类也可以测试任何其他测试用例)内部调用此方法。

    所以,一个测试用例可以是一个类。如果是单个类,将有助于调试和维护目的。如果测试用例过于复杂,可以将功能拆分为两个或更多类。

    每个测试步骤都是java中的方法吗?

    ---> 是的,可以。当您检查登录或注销功能时,您将分别调用登录方法或注销方法。有时,如果该方法不能被重用并且它只特定于一个应用程序,那么它就不是一个方法。您需要显式编写所有逻辑,而不是调用已经存在的方法。

    【讨论】:

    • 感谢您的解释,喜欢您的回答。
    【解决方案2】:

    这取决于您的要求。

    例子

    public class gmailTest()
    {
    
       @BeforeClass
       public void beforeClass()
       {
           1. Navigate to Gmail
           2. sign in
       }
    
       @BeforeMethod
       public void beforeMethod()
       {
    
       }
       @Test
       public void testInbox()
       {
            Check Inbox for New Emails , Read the email 
       }
       @Test
       public void testInbox()
       {
            Compose an email , send the email
       }
        @AfterMethod
       public void afterMethod()
       {
    
       }
       @BeforeClass
       public void afterClass()
       {
          signout
       }
    
    }
    

    @BeforeClass: 被注解的方法会在当前类的第一个测试方法被调用之前运行。

    @AfterClass: 被注解的方法会在当前类的所有测试方法都运行完后运行。

    @BeforeMethod:注解的方法会在每个测试方法之前运行。

    @AfterMethod:注解的方法会在每个测试方法之后运行。

    更多关于testng的信息请点击here

    【讨论】:

    • 如果case需要并行运行,上述方案可能会失败。
    • 如果测试需要并行运行,应该如何实现?如果我需要为一个测试用例创建两个实例但数据不同怎么办?
    • 你可以使用TestNG的dataprovider或者factory。参考testng.org/doc/documentation-main.html
    【解决方案3】:

    我曾经遇到过完全相同的问题(但我使用的是 Python)。
    所以这就是我所做的:

    1) 每个class 都是测试用例
    2) 每个method 都是一个测试步骤
    3) 在class setup 内并tear down 完全到初始点。 (所以它可以用于以后分发)
    4)创建“如果一个方法失败->类中的其余方法都没有运行(自动失败)”的逻辑

    5) (!!) 创建“如果方法改变了状态然后为它添加一个'tear down'”的逻辑

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多