【问题标题】:Is there a way to see if a selenium test is being ran via nunit or nunit-console?有没有办法查看硒测试是否通过 nunit 或 nunit-console 运行?
【发布时间】:2015-06-05 05:46:34
【问题描述】:

所以,我有合理数量的 Selenium 测试。我希望它们通过批处理脚本、nunit-console 和 RemoteWebDriver 在后台安静地运行。我已经有了这个设置。我还希望能够使用 nunit 与 Visual Studios 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...
}

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

【问题讨论】:

    标签: selenium nunit nunit-console


    【解决方案1】:

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

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

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

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

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

    如果您确实需要跟踪进程调用堆栈以查看父进程是什么,this question 上有一些关于如何执行此操作的出色答案。

    【讨论】:

    • 这正是我希望做的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-06-03
    • 2016-10-24
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多