是否可以在程序集中的所有测试之前和之后执行方法?

时间:2013-08-28 10:39:18

标签: c# selenium nunit

我想建立一个针对selenium ui自动化的nunit项目。我想在运行所有测试(所有测试)之前登录该站点,并在运行所有测试(所有测试)之后关闭浏览器。

我无法使用SetUp,因为它与灯具有关,我想在所有事情之前和之后都这样做。

你知道执行者吗?


我熟悉SetUp和TearDown属性。 让我再解释一下。

我需要在所有灯具的所有测试开始之前执行一些逻辑(AKA - 整个装配中的第一次测试)以及在所有灯具的所有测试结束后执行的一些逻辑(AKA - 整个装配中的最后一次测试) )。

4 个答案:

答案 0 :(得分:23)

如果所有测试装置都在同一名称空间内,那么您可以使用[SetUpFixture]属性将类标记为全局设置和拆卸。然后,您可以将所有登录/注销功能放在那里。

NUNIT 2.x

namespace MyNamespace.Tests
{
    using System;
    using NUnit.Framework;

    [SetUpFixture]
    public class TestsSetupClass
    {
        [SetUp]
        GlobalSetup()
        {
            // Do login here.
        }

        [TearDown]
        GlobalTeardown()
        {
            // Do logout here
        }
    }
}

请参阅: http://www.nunit.org/index.php?p=setupFixture&r=2.4

NUNIT 3.x

namespace MyNamespace.Tests
{
    using System;
    using NUnit.Framework;

    [SetUpFixture]
    public class TestsSetupClass
    {
        [OneTimeSetUp]
        GlobalSetup()
        {
            // Do login here.
        }

        [OneTimeTearDown]
        GlobalTeardown()
        {
            // Do logout here
        }
    }
}

请参阅: https://github.com/nunit/docs/wiki/SetUpFixture-Attribute

答案 1 :(得分:8)

不确定。这就是[TestSetUp][TearDown]属性的用途。不要将它们与[TestFixtureSetUp][TestFixtureTearDown]混淆,它们在第一次测试之前和之后执行。

答案 2 :(得分:3)

在执行每个测试用例之前[SetUp]部分将执行

完成每个测试用例的执行后[TearDown]部分将被执行。

如果我们想要初始化变量,我们经常在[SetUp]部分写一个像构造函数

如果我们想要处理我们经常写在[TearDown]部分

中的任何对象
    [SetUp]
    protected void SetUp()
    {
             //initialize objects
    }

    [TearDown]
    public void TearDown()
    {
       //dispose objects
    }

答案 3 :(得分:1)

nunit中最接近的是SetupFixture属性,它允许您标记类以对命名空间中的所有测试装置进行设置/拆卸;

  

SetUpFixture中的SetUp方法在其命名空间中包含的任何fixture之前执行一次。在所有灯具完成执行后,TearDown方法执行一次。