Nightwatch入门(三):配置

测试运行器需要传递配置文件,默认情况下使用当前目录中的nightwatch.json文件(如果存在)。如果找到,默认情况下也会加载nightwatch.conf.js文件。
让我们在项目的根文件夹中创建nightwatch.json并在里面添加:

{
  "src_folders" : ["tests"],
  "output_folder" : "reports",
  "custom_commands_path" : "",
  "custom_assertions_path" : "",
  "page_objects_path" : "",
  "globals_path" : "",

  "selenium" : {
    "start_process" : false,
    "server_path" : "",
    "log_path" : "",
    "port" : 4444,
    "cli_args" : {
      "webdriver.chrome.driver" : "",
      "webdriver.gecko.driver" : "",
      "webdriver.edge.driver" : ""
    }
  },

  "test_settings" : {
    "default" : {
      "launch_url" : "http://localhost",
      "selenium_port"  : 4444,
      "selenium_host"  : "localhost",
      "silent": true,
      "screenshots" : {
        "enabled" : false,
        "path" : ""
      },
      "desiredCapabilities": {
        "browserName": "firefox",
        "marionette": true
      }
    },

    "chrome" : {
      "desiredCapabilities": {
        "browserName": "chrome"
      }
    },

    "edge" : {
      "desiredCapabilities": {
        "browserName": "MicrosoftEdge"
      }
    }
  }
}

同时使用这两个配置文件也是可能的,如果两个配置文件都能找到,则nightwatch.conf.js始终优先。
范例

module.exports = (function(settings) {
  settings.test_workers = false;
  return settings;
})(require('./nightwatch.json'));

基本配置

名称类型默认配置备注
src_foldersstring/arraynone测试所在的文件夹数组(不包括子文件夹)。
output_folder(有子选项)string测试结果保存JUnit XML格式报告文件的位置。
custom_commands_path(有子选项)string/arraynone加载自定义命令的位置。
custom_assertions_path(有子选项)string/arraynone加载自定义断言的位置
page_objects_path(有子选项)string/arraynone加载自定义目标的位置
globals_pathstringnone外部全局模块的位置,它将作为主客户端实例测试上的全局变量属性加载。Globals也可以 在test_settings环境中定义/覆盖。
selenium(有子选项)object包含Selenium Server相关配置选项的对象。请参阅下文了解详情。
test_settingsobject该对象包含所有与测试相关的选项。请参阅下文了解详情。
live_output(有子选项)booleanfalse是否在并行运行时缓冲输出。请参阅下文了解详情。
disable_colors (有子选项)booleanfalse控制是否全局禁用cli输出的着色。
parallel_process_delay(有子选项)integer10指定在并行模式下运行时启动子进程之间的延迟(以毫秒为单位)。
test_workers (有子选项)boolean/objectfalse是否并行运行单个测试文件。如果设置为true,则并行运行测试并自动确定工作器数。 如果设置为对象,则可以指定将worker的数量指定为“auto”或数字。 例子: “test_workers” : {“enabled” : true, “workers” : “auto”}
test_runner (有子选项)string/object“default”指定运行测试时要使用的测试运行器。值可以是默认值(内置于nightwatch runner)或mocha。例子: “test_runner” : {“type” : “mocha”, “options” : {“ui” : “tdd”}}

selenium设置

以下是selenium服务器进程的许多选项。 Nightwatch可以自动启动和停止Selenium过程,这非常方便,因为您不必自己管理,只关注测试。
如果要启用此功能,请将start_process设置为true,并在server_path中指定jar文件的位置。

名称类型默认配置备注
start_processbooleanfalse是否自动管理selenium过程。
start_session(有子选项)booleantrue是否自动启动Selenium会话。在运行不与Selenium服务器交互的单元/集成测试时,通常会将其设置为false。
server_pathstringnoneselenium jar文件的位置。如果启用了start_process,则需要指定此项。 例如:bin / selenium-server-standalone-2.43.0.jar
custom_assertions_path(有子选项)string/arraynone加载自定义断言的位置
page_objects_path(有子选项)string/arraynone加载自定义目标的位置
globals_pathstringnone外部全局模块的位置,它将作为主客户端实例测试上的全局变量属性加载。Globals也可以 在test_settings环境中定义/覆盖。
log_pathstring/booleannoneselenium output.log文件的放置位置。默认为当前目录。 要禁用Selenium日志记录,请将其设置为false。
portinteger4444Selenium 监听的端口号
cli_argsobjectnone要传递给Selenium进程的cli参数列表。在这里,您可以为浏览器驱动程序设置各种选项,例如: 1.webdriver.firefox.profile:Selenium将默认为每个会话创建一个新的Firefox配置文件。如果您希望使用现有的Firefox配置文件,可以在此处指定其名称。 此处提供的Firefox驱动程序参数的完整列表。2.webdriver.chrome.driver:Nightwatch也可以使用Chrome浏览器运行测试。要启用此功能,您必须下载ChromeDriver二进制文件并在此处指定其位置。另外,不要忘记在desiredCapabilities对象中指定chrome作为浏览器名称。 可以在ChromeDriver网站上找到更多信息。3.webdriver.ie.driver:Nightwatch也支持Internet Explorer。要启用此功能,您必须下载IE驱动程序二进制文件并在此处指定它的位置。另外,不要忘记将“Internet Explorer”指定为desiredCapabilities对象中的浏览器名称。

测时配置

以下是将传递给Nightwatch实例的一些设置。您可以定义测试设置的多个部分(环境),以便可以覆盖每个环境的特定值。

需要“默认”环境。所有其他环境都是从默认环境继承的,可以根据需要覆盖设置。

{
  ...
  "test_settings" : {
    "default" : {
      "launch_url" : "http://localhost",
      "globals" : {
        "myGlobalVar" : "some value",
        "otherGlobal" : "some other value"
      }
    },

    "integration" : {
      "launch_url" : "http://staging.host",
      "globals" : {
        "myGlobalVar" : "other value"
      }
    }
  }
}

然后可以将设置组的键作为--env参数传递给运行器以使用指定的设置,如下所示:

$ nightwatch --env integration

如果您需要为本地计算机和Continuous Integration服务器设置不同的设置,这将非常有用。
launch_url属性
该属性将提供给测试中使用的主要Nightwatch api。它的价值取决于使用的环境。
如果您按照上面的示例运行测试(使用--env integration),则start_url将根据配置设置为http://staging.host。否则,它将具有在默认环境中定义的值(即http:// localhost)。

 module.exports = {
  'Demo test' : function (browser) {
    browser
      .url(browser.launchUrl)
      // ...
      .end();
  }
};

测试全局变量
Nightwatch提供的一个非常有用的概念是测试全局。在最简单的形式中,这是一个名称 - 值对的字典,它在nightwatch.json配置文件中定义。与launch_url属性一样,它可以直接在Nightwatch api上使用,并传递给测试。它还取决于所使用的环境,能够覆盖每个环境的特定全局变量。
如果我们仍然将--env集成选项传递给runner,那么我们的globals对象将如下所示:

module.exports = {
  'Demo test' : function (browser) {

    console.log(browser.globals);
    // {
    //   "myGlobalVar" : "some value",
    //   "otherGlobal" : "some other value"
    // }

  }
};

默认情况下,将为每个测试套件运行创建深层对象副本。如果您想在整个测试运行期间保持相同的对象,请将persist_globals选项设置为true,如下所述。
完整的设置列表

名称类型默认配置备注
launch_urlstringnone一个url,可以在以后的测试中用作加载的主URL。如果您的测试将在不同的环境中运行,每个环境都有不同的URL,则可能很有用。
selenium_hoststringlocalhostselenium服务器接受连接的主机名/ IP。
selenium_portinteger4444selenium服务器接受连接的端口号。
request_timeout_options(自v0.9.11起)object60000 / 0定义在达到超时之前,对Selenium服务器的HTTP请求将保持打开的毫秒数。超时后,请求可以自动重试指定的次数,由retry_attempts属性定义。例如:"request_timeout_options": { "timeout": 15000, "retry_attempts": 5}
silentbooleantrue是否显示扩展的Selenium命令日志。
outputbooleantrue用于完全禁用终端输出。
disable_colorsbooleanfalse用于禁用终端中的彩色输出。
firefox_profilestring/objectnone不推荐使用此选项,而选择selenium设置对象上的cli_args对象。
chrome_driverstringnone不推荐使用此选项,而选择selenium设置对象上的cli_args对象。
ie_driverstringnone不推荐使用此选项,而选择selenium设置对象上的cli_args对象。
screenshotsobjectnoneSelenium会在发生命令错误时生成屏幕截图。将on_failure设置为true,还会生成失败或错误测试的屏幕截图。这些保存在磁盘上。从v0.7.5起,您可以通过将“on_error”设置为false来禁用命令错误的屏幕截图。例如:”screenshots” : { “enabled” : true, “on_failure” : true, “on_error” : false, “path” : “”}
usernamestringnone如果selenium服务器需要凭据,则此用户名将用于计算Authorization标头。该值也可以是环境变量,在这种情况下,它将如下所示:"username" : "${SAUCE_USERNAME}"
access_keystringnone此字段将与username一起使用以计算Authorization标头。 与username一样,该值也可以是环境变量:"access_key" : "${SAUCE_ACCESS_KEY}"
proxy(自v0.8.6起)stringnoneproxy请求到selenium服务器。接受http,https,socks(v5),socks5,sock4和pac。使用node-proxy-agent。例如:http://user:pass@host:port
desiredCapabilitiesobject将在创建新会话时传递给Selenium WebDriver的对象。您可以指定实例的浏览器名称以及其他功能。例如:"globals" : { "myGlobal" : "some_global"}
excludearray要跳过的文件夹或文件模式数组(相对于主源文件夹)。例如:"exclude" : ["excluded-folder"]"exclude" : ["test-folder/*-smoke.js"]
filterstring加载测试时要使用的文件夹或文件模式。与此模式不匹配的文件将被忽略。例如:"filter" : "tests/*-smoke.js"
log_screenshot_databooleanfalse在拍摄屏幕截图时,不要在(详细)日志中显示Base64图像数据。
globals_pathstringnone外部全局模块的位置,它将作为主客户端实例测试上的全局变量属性加载。Globals也可以 在test_settings环境中定义/覆盖。
log_pathstring/booleannoneselenium output.log文件的放置位置。默认为当前目录。 要禁用Selenium日志记录,请将其设置为false。
use_xpathbooleanfalse使用xpath作为默认定位器策略
cli_argsobjectnone与Selenium设置cli_args相同。您可以基于每个环境覆盖全局cli_args
end_session_on_failbooleantrue通常在断言失败后,在测试终止时自动结束会话。
skip_testcases_on_failbooleantrue当一个测试用例失败时,从同一测试套件(即测试文件)中跳过剩余的测试用例(或测试步骤)。
output_folder(自0.8.18)string/object当定义将保存JUnit XML报告文件的位置。这将覆盖“基本设置”部分中定义的任何值。如果您想在特定环境中完全禁用报告,请将其设置为false
persist_globals(自0.8.18)booleanfalse如果您想在testsuite运行之间保留相同的全局对象,或者每个testsuite都有一个(深层)副本,请将此设置为true
compatible_testcase_support(自0.9.0)booleanfalse适用于单元测试。设置为true时,允许将测试写入标准Exports接口,该接口可与Mocha框架互换。不推荐使用先前的单元测试接口支持,这将成为未来版本的默认设置。
detailed_output(自0.9.0)booleantrue默认情况下,在测试运行时会显示详细的断言输出。如果您只想查看显示的测试用例名称和通过/失败状态,请将此项设置为false。这在并行运行测试时特别有用。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值