Selenium和MSTest:[DataRow]在TestClass级别上使用?

3
非常感谢您的提问!
我正在创建一个Selenium框架(C#,MSTest),并且遇到了麻烦,试图使测试数据驱动化。
我的目标是: 我需要支持不同类型的用户登录应用程序进行测试(假设我有其中4个用户)。由于这些用户具有不同的权限,所以我计划根据执行测试的用户将测试方法放入单独的测试类中。
例如: 例如,我有几个测试仅可以由用户1和用户2执行,还有几个测试仅可以由用户3和用户4执行。因此,第一堆测试进入测试类1中,第二堆测试进入测试类2中。
目前,我为每个测试类中的每个方法使用DataRows,并且它起作用。但是,这似乎是一种重复和低效的解决方案。在这种情况下,我为相同的用户在每个单独的测试中进行登录。 我想要的是:在class1中,user1只需登录一次,然后执行类中的所有测试,而无需在每个测试方法中重复登录部分。然后,user2登录一次并执行所有测试。对于其他测试类也是同样的处理方式。
[TestClass1]
public class TestClass1
{
   [DataTestMethod1]
   [DataRow("UserType1", "Selenium_pssw1")]
   [DataRow("UserType2", "Selenium_pssw2")]
   public void Test1 (string usernameString, string passwordString)
   {
   //do smth and assert smth
   }

   [DataTestMethod2]
   [DataRow("UserType1", "Selenium_pssw1")]
   [DataRow("UserType2", "Selenium_pssw2")]
   public void Test2 (string usernameString, string passwordString)
   {
   //do smth and assert smth
   }
}

TestClass2将包含几个测试方法,但是针对不同的用户类型,例如仅适用于UserType1和UserType4。

是否有可能在测试类级别而不是单个测试方法级别上使用数据源?

P.S:对于我的英语和编程的幼稚,我感到抱歉。我刚开始这条道路 :) 我已经在Google上搜索了很多尝试找到在线答案。也许,我只是不知道该问什么...

1个回答

0

看一下 MSTest 的注解。你可以使用 [ClassInitialize] 注解来登录并运行所有的测试。此外,你还需要一个适当的注解来关闭 webdriver 的方法,这样它只会在类中的所有测试都运行完之后才关闭,而不是每个测试运行完就关闭。

另外要熟悉继承。你可以设置一个名为 BaseTest 的基类,该类使用特定的注解来进行驱动程序的初始化和拆卸。


我已经看过[ClassInitialize],但它只能在我有一个用户的情况下运行,对吗? 我真正需要的是轮流使用几个不同的用户进行登录,并且每个用户都应该通过类中的所有测试方法。我是否正确理解没有办法做以下事情? '[TestClass] [ClassInitialize] [DataRow("UserType1", "Selenium_pssw1")] [DataRow("UserType2", "Selenium_pssw2")]'我已经有一个处理驱动程序的基类 :) - Elena
1
我认为MSTest不可能做到这一点...你可能需要切换到NUnit,因为它具有适用于类级别的TestFixtures(https://docs.nunit.org/2.5/testFixture.html)和适用于方法级别的TestCases(https://docs.nunit.org/2.5/testCase.html)。 - Shatas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接