1

所以,我有合理数量的硒测试。我希望它们通过批处理脚本、nunit-console 和 RemoteWebDriver 在后台安静地运行。我已经有了这个设置。我还希望能够使用 nunit 与 Visual Studio 2013 中的其他驱动程序一起运行相同的测试(与我一起观看、调试、编写新测试等)。我已经设置好了。问题是我希望能够同时运行它们。

我正在考虑检查调用程序是否是 nunit 与 nunit-console 以确定要使用的驱动程序,但我有点不确定我应该如何设置它。

我考虑过:

bool isConsole = Process.GetProcessesByName("nunit-console")
                .FirstOrDefault(p => p.MainModule.FileName.StartsWith(@"C:\Program Files (x86)\NUnit 2.6.4\bin")) != default(Process);

if (isConsole)
{ 
   // remote
}
else
{
   // ff,chrome,etc...
}

但是,这不允许我在后台安静地运行套件,同时在视觉工作室中运行单个测试。

4

1 回答 1

1

我不确定您在运行 selenium 测试时是否有任何区别,但是通过正常的 nunit 测试,您可以这样做:

if("nunit" == Process.GetCurrentProcess().ProcessName)) {
    ...
}

这将获取实际执行测试的进程的名称,而不仅仅是检查进程当前是否在机器上运行。

从visual studio中运行,我得到一个进程名称“vstest.executionengine.x86”,从控制台,我得到“nunit-console”,从gui我得到“nunit”。

根据您运行测试的流程模型,您可能需要检查父流程,而不是当前流程。将 Nunit 配置为在单独的进程中运行测试时,使用上述代码报告的进程名称为“nunit-agent”。出于某种原因,我目前无法让 nunit-console 在此模式下运行,所以我不知道它是否有不同的进程名称可供您使用。

如果您确实需要跟踪进程调用堆栈以查看父进程是什么,关于如何在这个问题上执行此操作有一些很好的答案。

于 2015-06-04T20:26:51.557 回答