我正在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的工厂似乎削减了另一种方式(给定测试,它可以提供一组用户 - 但是我必须为每次测试多次登录和注销)。
有关处理此测试方案的最佳方法的任何建议吗?
答案 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()
{
}
}
}