如何组织多次登录的端到端(.NET + Selenium)测试?

时间:2014-12-08 17:24:16

标签: .net testing selenium selenium-webdriver functional-testing

我正在Visual Studio中为Web应用程序编写一些自动化的端到端测试,并且在如何组织它们时摸不着头脑。不同的用户可以访问应用程序的不同功能,所以我期待一个类似网格的工具,我们可以检查应该为每个用户(列)运行的测试(行)。

如何处理身份验证?在每次测试之前登录并在之后注销似乎不必要地慢,但登录步骤属于哪里?我认为我想要的是

For each user
    Log in
    For each test class
        If this test class applies for this user
             Run test methods
    Log out

我看不出组织这个的好方法。 NUnit的工厂似乎削减了另一种方式(给定测试,它可以提供一组用户 - 但是我必须为每次测试多次登录和注销)。

有关处理此测试方案的最佳方法的任何建议吗?

1 个答案:

答案 0 :(得分:1)

我们使用selenium webdriver处理相同类型的场景。我听到你的痛苦。使用不同的身份验证登录很痛苦。我们确实有多次对话如何减少这种痛苦的重复。但是,遗憾的是没有办法解决问题。至少如果你考虑硒测试的目的。大多数人使用selenium来复制用户行为和验收测试。因此,它几乎只是做最终用户将要做的事情。但是你有一个很好的选择,可以并行执行测试以减少执行时间。你可以找到一些帮助here。 Selenium网格允许您启动多个测试实例到不同的从机。而且,我们使用Page Object Mode组织测试。它还有助于减少代码重复和可维护性。

编辑:NUnit测试类演示

using System;
using Netchex.Tests.UI.DataObjects;
using Netchex.Tests.UI.PageObjects.Test;
using Netchex.Tests.UI.PageObjects.Login;
using NUnit.Framework;

namespace mynamespace
{
    [TestFixture(Browser.Chrome)]
    [TestFixture(Browser.Firefox)]
    [TestFixture(Browser.InternetExplorer)]
    public class MyClass
    {
        [TestFixtureSetUp]
        public void SetupTest()
        {
            //Run before all the test. Log in here and run all the tests for same user
        }

        [SetUp]
        public void Init()
        {
            //Run before each test
        }

        [TestFixtureTearDown]
        public void TeardownTest()
        {
            //Run after all test completed executing
        }

        [TearDown]
        public void Teardown()
        {
            //Run after each test
        }

        [Test]
        public void TestOne()
        {
        }

        [Test]
        public void TestTwo()
        {
        }
    }
}