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_folders | string/array | none | 测试所在的文件夹数组(不包括子文件夹)。 |
output_folder(有子选项) | string | 测试结果 | 保存JUnit XML格式报告文件的位置。 |
custom_commands_path(有子选项) | string/array | none | 加载自定义命令的位置。 |
custom_assertions_path(有子选项) | string/array | none | 加载自定义断言的位置 |
page_objects_path(有子选项) | string/array | none | 加载自定义目标的位置 |
globals_path | string | none | 外部全局模块的位置,它将作为主客户端实例测试上的全局变量属性加载。Globals也可以 在test_settings环境中定义/覆盖。 |
selenium(有子选项) | object | 包含Selenium Server相关配置选项的对象。请参阅下文了解详情。 | |
test_settings | object | 该对象包含所有与测试相关的选项。请参阅下文了解详情。 | |
live_output(有子选项) | boolean | false | 是否在并行运行时缓冲输出。请参阅下文了解详情。 |
disable_colors (有子选项) | boolean | false | 控制是否全局禁用cli输出的着色。 |
parallel_process_delay(有子选项) | integer | 10 | 指定在并行模式下运行时启动子进程之间的延迟(以毫秒为单位)。 |
test_workers (有子选项) | boolean/object | false | 是否并行运行单个测试文件。如果设置为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_process | boolean | false | 是否自动管理selenium过程。 |
start_session(有子选项) | boolean | true | 是否自动启动Selenium会话。在运行不与Selenium服务器交互的单元/集成测试时,通常会将其设置为false。 |
server_path | string | none | selenium jar文件的位置。如果启用了start_process,则需要指定此项。 例如:bin / selenium-server-standalone-2.43.0.jar |
custom_assertions_path(有子选项) | string/array | none | 加载自定义断言的位置 |
page_objects_path(有子选项) | string/array | none | 加载自定义目标的位置 |
globals_path | string | none | 外部全局模块的位置,它将作为主客户端实例测试上的全局变量属性加载。Globals也可以 在test_settings环境中定义/覆盖。 |
log_path | string/boolean | none | selenium output.log文件的放置位置。默认为当前目录。 要禁用Selenium日志记录,请将其设置为false。 |
port | integer | 4444 | Selenium 监听的端口号 |
cli_args | object | none |
要传递给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_url | string | none | 一个url,可以在以后的测试中用作加载的主URL。如果您的测试将在不同的环境中运行,每个环境都有不同的URL,则可能很有用。 |
selenium_host | string | localhost | selenium服务器接受连接的主机名/ IP。 |
selenium_port | integer | 4444 | selenium服务器接受连接的端口号。 |
request_timeout_options(自v0.9.11起) | object | 60000 / 0 |
定义在达到超时之前,对Selenium服务器的HTTP请求将保持打开的毫秒数。超时后,请求可以自动重试指定的次数,由retry_attempts 属性定义。例如:"request_timeout_options": { "timeout": 15000, "retry_attempts": 5}
|
silent | boolean | true | 是否显示扩展的Selenium命令日志。 |
output | boolean | true | 用于完全禁用终端输出。 |
disable_colors | boolean | false | 用于禁用终端中的彩色输出。 |
firefox_profile | string/object | none | 不推荐使用此选项,而选择selenium设置对象上的cli_args对象。 |
chrome_driver | string | none | 不推荐使用此选项,而选择selenium设置对象上的cli_args对象。 |
ie_driver | string | none | 不推荐使用此选项,而选择selenium设置对象上的cli_args对象。 |
screenshots | object | none |
Selenium会在发生命令错误时生成屏幕截图。将on_failure 设置为true,还会生成失败或错误测试的屏幕截图。这些保存在磁盘上。从v0.7.5起,您可以通过将“on_error ”设置为false来禁用命令错误的屏幕截图。例如:”screenshots” : { “enabled” : true, “on_failure” : true, “on_error” : false, “path” : “”}
|
username | string | none |
如果selenium服务器需要凭据,则此用户名将用于计算Authorization标头。该值也可以是环境变量,在这种情况下,它将如下所示:"username" : "${SAUCE_USERNAME}"
|
access_key | string | none |
此字段将与username 一起使用以计算Authorization 标头。 与username 一样,该值也可以是环境变量:"access_key" : "${SAUCE_ACCESS_KEY}"
|
proxy(自v0.8.6起) | string | none |
proxy请求到selenium服务器。接受http,https,socks(v5),socks5,sock4和pac。使用node-proxy-agent 。例如:http://user:pass@host:port
|
desiredCapabilities | object |
将在创建新会话时传递给Selenium WebDriver的对象。您可以指定实例的浏览器名称以及其他功能。例如:"globals" : { "myGlobal" : "some_global"}
|
|
exclude | array |
要跳过的文件夹或文件模式数组(相对于主源文件夹)。例如:"exclude" : ["excluded-folder"] 或"exclude" : ["test-folder/*-smoke.js"]
|
|
filter | string |
加载测试时要使用的文件夹或文件模式。与此模式不匹配的文件将被忽略。例如:"filter" : "tests/*-smoke.js"
|
|
log_screenshot_data | boolean | false | 在拍摄屏幕截图时,不要在(详细)日志中显示Base64图像数据。 |
globals_path | string | none | 外部全局模块的位置,它将作为主客户端实例测试上的全局变量属性加载。Globals也可以 在test_settings环境中定义/覆盖。 |
log_path | string/boolean | none | selenium output.log文件的放置位置。默认为当前目录。 要禁用Selenium日志记录,请将其设置为false。 |
use_xpath | boolean | false | 使用xpath作为默认定位器策略 |
cli_args | object | none |
与Selenium设置cli_args 相同。您可以基于每个环境覆盖全局cli_args 。
|
end_session_on_fail | boolean | true | 通常在断言失败后,在测试终止时自动结束会话。 |
skip_testcases_on_fail | boolean | true | 当一个测试用例失败时,从同一测试套件(即测试文件)中跳过剩余的测试用例(或测试步骤)。 |
output_folder(自0.8.18) | string/object |
当定义将保存JUnit XML报告文件的位置。这将覆盖“基本设置”部分中定义的任何值。如果您想在特定环境中完全禁用报告,请将其设置为false 。
|
|
persist_globals(自0.8.18) | boolean | false |
如果您想在testsuite运行之间保留相同的全局对象,或者每个testsuite都有一个(深层)副本,请将此设置为true 。
|
compatible_testcase_support(自0.9.0) | boolean | false | 适用于单元测试。设置为true时,允许将测试写入标准Exports接口,该接口可与Mocha框架互换。不推荐使用先前的单元测试接口支持,这将成为未来版本的默认设置。 |
detailed_output(自0.9.0) | boolean | true | 默认情况下,在测试运行时会显示详细的断言输出。如果您只想查看显示的测试用例名称和通过/失败状态,请将此项设置为false。这在并行运行测试时特别有用。 |
Nightwatch入门(三):配置相关推荐
- Ansible Tower 入门 1 - 配置主机清单和访问凭证
Ansible Tower 入门 1 - 配置主机清单和访问凭证 Ansible Tower 入门 2 - 通过模板运行 Git 上的 Playbook 和 Role Ansible Tower 入门 ...
- vue(vue-cli+vue-router)+babel+webpack项目搭建入门(三)
vue(vue-cli+vue-router)+babel+webpack项目搭建入门<三> 本系列文章将介绍基于vue+webpack的前端项目的构建过程.文章分为四章内容,第一章介绍开 ...
- redis入门(三)
文章目录 @[toc] redis入门(三) 目录 前言 事务 原理 Lua脚本 安装 脚本命令 EVAL EVALSHA lua和redis互操作 SCRIPT EXISTS SCRIPT FLUS ...
- 传智播客 React 入门 三天课程
传智播客 React 入门 三天课程 第一天 理论和配置 虚拟DOM和DIFF算法 React 的核心是虚拟DOM和DIFF算法.DIFF 算法确保虚拟DOM高效运行(从上到下分别是 tree-dif ...
- WPF入门(三)-几何图形之不规则图形(PathGeometry) (2)
WPF入门(三)->几何图形之不规则图形(PathGeometry) (2) 原文:WPF入门(三)->几何图形之不规则图形(PathGeometry) (2) 上一节我们介绍了PathG ...
- [转载]Python爬虫入门三之Urllib库的基本使用
python爬虫系列教程http://cuiqingcai.com/1052.html 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优 ...
- 脑残式网络编程入门(三):HTTP协议必知必会的一些知识
为什么80%的码农都做不了架构师?>>> 本文原作者:"竹千代",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说&q ...
- 文本分类入门(三)统计学习方法
文本分类入门(三)统计学习方法 前文说到使用统计学习方法进行文本分类就是让计算机自己来观察由人提供的训练文档集,自己总结出用于判别文档类别的规则和依据.理想的结果当然是让计算机在理解文章内容的基础上进 ...
- .Net 3.5 Remoting编程入门三
VS2008 .Net 3.5 Remoting编程入门三 信道 什么是信道?信道有哪些类型呢? 信道顾名思意就是通信的通道.就想那些宣传标语说的,"要想富,先修路!".同理,要学 ...
最新文章
- 12.1简介Object类
- 堆中的路径 (25 分)
- Ajax(异步请求)和传统(同步请求)区别
- Logback 整合 RabbitMQ 实现统一日志输出
- 不重叠的线段(51Nod-1133)
- HTML5 —— 本地存储
- mysql sum带条件_mysql – SUM()基于SELECT的不同条件
- 最小二乘法详解(线性拟合与非线性拟合)
- 华为CE6870固件升级 更新补丁操作
- 这就是我不建议去外包公司开发的原因?
- selenium网页截图总结
- 深析Vue双向数据绑定(MVVM模型)
- SAP那些事-生产订单结算规则修改
- 嵌入式Linux之正点原子Linux开发板入手
- android app签名方法
- 关于程序员秃顶和预防的小知识
- MySQL——创建数据库和数据表
- Java基础语法(二)
- 重回华语乐坛神仙打架的时代——飞利浦S302圈铁耳机评测
- 【第68篇】多目标跟踪:文献综述