网站测试自动化系统—基于Selenium和VSTT(2)

发表于:2012-09-10来源:不祥作者:知平软件点击数: 标签:selenium
// 变慢,所以 public const string TimeToWaitForPageLoad = 30000; } public class TestLibrary { public UserOperationsHelper UserHelper { get; private set; } } public class TestClass { [TestMethod]

  // 变慢,所以

  public const string TimeToWaitForPageLoad = "30000";

  }

  public class TestLibrary

  {

  public UserOperationsHelper UserHelper { get; private set; }

  }

  public class TestClass

  {

  [TestMethod]

  public void LogOnTest()

  {

  var username = "donjuan";

  var password = "它是个秘密";

  TestLibrary.UserHelper.LogOn(username, password);

  // 在测试过程中,我们发现这个链接是

  // 根据用户名而变的,为了扩展性,动态生成其标识文本

  selenium.Click(string.Format("link={0}", username));

  selenium.WaitForPageToLoad(Consts.TimeToWaitForPageLoad);

  selenium.Click("link=博客");

  selenium.WaitForPageToLoad(Consts.TimeToWaitForPageLoad);

  // 执行一些必要的测试验证过程

  Assert.IsTrue(selenium.IsTextPresented(...));

  }

  }

  这里稍微解释一下,创建自动化测试代码,就是为了节省手工重复测试的工作量以及测试失误的风险。但只要是代码,都会有可能出错,因此自动化测试框架里面创建了一个CaseErrorException,这样在每次分析测试用例失败的时候,可以一眼区分开测试代码的错误和产品代码中的错误。例如在UserOperationHelper.LogOn函数中的参数检查,当然啦,在测试过程当中,有可能需要测试不输入用户名或者密码的情况下,验证登录界面是否正常工作的情况。因此在验证参数的时候,特意为这种情况留下了String.Empty的入口,而对于null值,则基本上可以判断是因为测试人员在编写代码上的失误(具体原因会在数据驱动测试里面讲到)。

  至于TestLibrary的初始化,完全可以放到每一个测试类型的TestInitializer里面,如下表所示:

[TestClass]

public class AddBlogTest

{

    private TestContext testContextInstance;

    public TestContext TestContext

    {

        get

        {

                return testContextInstance;

        }

        set

        {

            testContextInstance = value;

        }

    }

 

    private TestLibrary TestLibrary;

    private ISelenium selenium;

 

    [TestInitialize]

    public void SetupTest()

    {

        TestLibrary = TestLibrary.SetupTest(TestContext);

        selenium = TestLibrary.Selenium;

    }

 

    [TestCleanup]

    public void TeardownTest()

    {

        TestLibrary.Shutdown();

    }

}

原文转自:http://www.ltesting.net