在nunit中按顺序执行测试
本文关键字:执行 测试 顺序 nunit | 更新日期: 2023-09-27 18:20:26
我想连续执行一些nunit/C#测试。我正在browserstack上测试网络驱动程序。我不想做的是用几个平台和几个设备按顺序执行测试。我尝试了[TestFixture("安卓","安卓系统","LG Nexus 4")][TestFixture("android","Samsung Galaxy S III")]和我的类的构造函数。但没有奏效。你能帮我一下吗?
[TestFixture("android", "Android", "LG Nexus 4")]
[TestFixture("android", "Samsung Galaxy S III")]
public class Multi
{
private IWebDriver driver;
private string _browsername;
private string _platform;
private string _device;
public void Multi(string browsername, string platform, string device)
{
_browsername = browsername;
_platform = platform;
_device = device;
}
[SetUp]
public void Init()
{
DesiredCapabilities capability = new DesiredCapabilities();
capability.SetCapability("browserstack.user", "test");
capability.SetCapability("browserstack.key", "test");
capability.SetCapability("browserstack.local", "true");
capability.SetCapability("browserName", _browsername);
capability.SetCapability("platform", _platform);
capability.SetCapability("device", _device);
driver = new RemoteWebDriver(
new Uri("http://hub.browserstack.com/wd/hub/"), capability
);
driver.Navigate().GoToUrl("http://sunet.se");
}
[Test]
public void StartTest()
{
Thread.Sleep(5000);
driver.FindElement(By.XPath("/html/body/div[2]/div/div/div[1]/div[1]/div[2]/div/div[1]/div/div/div[2]/div/a")).Click();
}
}
[TestFixtureTearDown]
public void Cleanup()
{
driver.Quit();
}
}
您的Multi-class有一个用于TestFixture的第一个签名(3个字符串)的构造函数,但没有用于第二个签名(两个字符串)。根据您的NUnit版本,这可以解释问题。添加正确的构造函数或更改第二个TestFixture
签名
我自己还没有尝试过,但有一个库可以用来实现这一点,叫做NUnit Sequencer。
https://www.ingenuityworking.com/knowledge/w/knowledgebase/1354.nunit-sequencer-tool-to-sequence-run-ordered-nunit-tests-and-fixtures-by-setting-attributes.aspx
设置它似乎需要一点配置,但它允许您用属性来装饰测试设备,这些属性按照您想要运行它们的顺序指定测试的名称。
示例:
[TestFixture]
[SequencedTestFixture("SubtractTest", "AddTest")]
public class ArithmeticTests1
这将首先运行一个名为SubtractTest
的测试,然后运行一个称为AddTest
的测试。
请注意,单元测试意味着彼此完全独立地运行,这就是为什么它们通常以不合逻辑的顺序运行(尽管NUnit似乎是按字母顺序运行的)。
事实上,如果你不想使用我提到的库,一个快速的解决方案是重命名你的测试设备,比如0001_DoThisThingFirst
和0002_DoSomethingElse
等等——这样NUnit就会按字母顺序运行它们。不过,这可能会成为一个令人头疼的维护问题。