与参数并行运行nunit测试(nunit 3.8.x)

我想并行运行硒测试,并在assembly.cs中设置以下内容。


[assembly: Parallelizable(ParallelScope.Fixtures)]

好的。这样可行。


这是代码结构的简短示例


using NUnit.Framework;


namespace MyExample

{

    [TestFixture]

    [Category("TestsRunningWithLogin1")]

    public class Test_Example1

    {

        [Test, Order(1)]

        public void Test1()

        {

        }

        [Test, Order(2)]

        public void Test2()

        {

        }

    }


    [TestFixture]

    [Category("TestsRunningWithLogin2")]

    public class Test_Example2

    {

        [Test, Order(1)]

        public void Test1()

        {

        }

        [Test, Order(2)]

        public void Test2()

        {

        }

    }

}

测试需要用户名和密码,然后才能在网页中进行操作。当前在OneTimeSetUp方法中处理登录等。该网页将最后使用的视图保存在用户设置中。


如果我按顺序运行测试,那么我不会有问题,因为测试不会相互影响。所有测试都可以使用相同的用户名运行。


如果并行运行,它们可能会相互影响。比如test1配置了一个view,test2中不应该看到的。


我的想法是与不同的用户一起运行类(其中有很多)。测试开始时,它应该使用用户名,并行运行测试当前未使用该用户名。目前,我不知道nunit正在并行运行哪些测试,因此无法直接对其进行参数化。


我没有找到如何控制并行测试的任何东西。我可以定义是否并行以及有多少并行执行。我想要的是给并行运行测试参数。如果我有3个并行运行的测试类,则要提供所有3个不同的参数。


有什么想法要实现吗?


阿波罗的战车
浏览 175回答 3
3回答

梦里花落0921

一个没有 nunit 的可能答案是提供参数的小服务。因此,每个并行测试都应调用一个Web服务,并将获得其唯一参数。该网络服务将在每次调用时返回下一个参数集。如果我要提供10个不同的参数集并并行运行3个测试,则可以肯定的是,这3个并行测试永远不会获得相同的参数。假设所有测试用例几乎都需要相同的时间。我会称其为hack,因此我正在寻求一个nunit解决方案。
打开App,查看更多内容
随时随地看视频慕课网APP