距离上一随笔,已经有一个月没有没写。到今天,刚刚好好,是学习e2e测试的一个月。今天有点时间可以总结一下这个月来的收获。

1、搭建e2e的测试环境

我是使用 Vue 构建项目,所以我也是通过Vue-cli生成已经包含 Selenium 与 Nightwatch 的 Vue 种子项目。

setup e2e tests with Nightwatch?Yes(单元测试需要)

2、e2e的测试目录

--e2e

 --custom-assertions(自定义断言)

 --reports(生成的测试报告存放位置)

 --specs(测试代码)

 --nightwatch.conf.js(配置文件)

3、nightwatch.conf.js(配置文件)

require('babel-register')
var config = require('../../config') // http://nightwatchjs.org/gettingstarted#settings-file
module.exports = {
src_folders: ['test/e2e/specs'],//测试用例源文件路径
output_folder: 'test/e2e/reports',//测试报告地址
custom_assertions_path: ['test/e2e/custom-assertions'],// 自定义命令,这里用来更新测试信息到custom-assertions
custom_commands_path : "",
page_objects_path : ['test/e2e/page-objects'],
globals_path : "",
//selenium配置
selenium: {
start_process: true,//是否开启
server_path: require('selenium-server').path,//路径
host: '127.0.0.1',
port: 4444, //端口
cli_args: { //cli_args指定将要运行的webdriver
'webdriver.chrome.driver': require('chromedriver').path
}
},
// 测试配置
test_settings: {
default: {
selenium_port: 4444,//指定 selenium server 接受的端口。。
selenium_host: 'localhost',//指定 selenium server 接受的 hostname/IP。
silent: true,//是否显示 selenium 命令日志。
use_xpath:true,//是否用 xpath 做为默认的元素选择策略。
globals: {//在测试代码中可以访问的全局变量,并且每次切换测试环境时可以重写该值。例如: *”globals” :{“myGlobal” : “some_global”}
devServerURL: 'http://localhost:' + (process.env.PORT || config.dev.port)
},
screenshots : {
"enabled" : false,
"path" : ""
},
}, chrome: {
desiredCapabilities: {
browserName: 'chrome',
javascriptEnabled: true,
acceptSslCerts: true,
"chromeOptions": {
"args" : ["--no-sandbox"]
}
}
}, firefox: {
desiredCapabilities: {
browserName: 'firefox',
javascriptEnabled: true,
acceptSslCerts: true
}
}
}
}

从上面代码可以看到有三种配置,分别是:Basic settings,Selenium settings和Test settings。我们下面详细看看这三种配置主要有哪些配置信息。

(1)Basic settings

Name type   default description
src_folders string|array none 测试代码目录(不包含子目录)
output_folder (optional) string tests_output 生成的测试报告存放目录
custom_commands_path (optional) string|array none Location(s) where custom commands will be loaded from.
custom_assertions_path (optional) string|array none 自定义断言路径
page_objects_path (Optional since v6.0.1) string|array none Location(s) where page object files will be loaded from.
globals_path (optional) string none 外部模块路径,为测试一共全局变量. 也可在test_settings中重写
selenium (optional) object   Selenium Server相关的设置
test_settings (optional) object   与测试相关的测试,下面有详细描述
live_output (optional) boolean false 是否缓存并持续输出结果
disable_colors (optional) boolean false 控制命令行输出是否带有高亮颜色
parallel_process_delay (optional) integer 10 在并行模式下启动子进程的时间,单位毫秒
test_workers boolean|object false 是否为运行单个文件测试启动并行模式,如果设置为true,会进入并行模式,并自动设置线程数。如果设置为对象,要指定enable和workers参数,workers接受数值和’auto’。 例如:”test_workers” : {“enabled” : true, “workers” : “auto”}
test_runner (optional) string|object “default”

用什么工具运行测试。值可以是”default”或”mocha”. 例如:”test_runner” : {“type” : “mocha”, “options” : {“ui” : “tdd”}}

(2)Selenium settings

如下是 selenium 的配置选项。Nightwatch可以自动管理 selenium 服务进程,以便你专注于测试工作。 如果要启用 selenium自启动,设置 start_process 为true 并设置 server_path 值为 selenium jar包路径。

Name type default description
start_process boolean false 是否启用 selenium自启动
start_session boolean true 是否自动启动 Selenium session.
server_path string none selenium jar 包路径。如果设置了 start_process 字段,必须设置此字段。例如: node_modules/selenium-server/lib/runner/selenium-server-standalone-2.53.0.jar
log_path string|boolean none selenium 生成的 output.log 文件存放位置,默认为当前目录下。设置false可以禁用 Selenium 日志。
host string 127.0.0.1 设置 selenium 监听地址。不常用到,除非指定了 start_process 为true。
port integer 4444 设置 selenium 监听端口
cli_args object none 一系列传递给 selenium 的命令行参数。 有许多选项可以设置, 例如:
      webdriver.firefox.profile: 默认情况下会为每个会话创建一个firefox配置文件,如果想要使用现有配置文件,在这里指定文件名。firefox驱动参数的完整列表见这里
      webdriver.chrome.driver: Nightwatch 也可以在 Chrome 上运行测试,如果要在 chrome 上运行测试需要下载 ChromeDriver binary 并为此字段设置 ChromeDriver 路径。同时要在 desiredCapabilities 对象配置中指定 browserName值为 “chrome”。 更多信息参考ChromeDriver website
      webdriver.ie.driver: Nightwatch同时也支持Internet Explorer,要在IE中运行测试,需要下载 IE Driver binary 并为此字段设置 IE Driver 路径。同时要在 desiredCapabilities 对象配置中指定 browserName值为 “internet explorer”。

(3)Test settings

只有”default”配置是必须的,其他配置可以按需要覆盖default中的配置信息。
测试环境可以通过 -env 参数传递给 nightwatch:

nightwatch --env integration
Name type default description
launch_url string none 测试时要加载的首页url, 如果有多个测试环境,可以分别指定url。
selenium_host string localhost 指定 selenium server 接受的 hostname/IP。
selenium_port string 4444 指定 selenium server 接受的端口。
silent boolean true 是否显示 selenium 命令日志。
output boolean rue 是否在命令行显示完整输出。
disable_colors boolean false 命令行输出是否高亮。
firefox_profile string|boolean none 已经弃用
chrome_driver string none 已经弃用
ie_driver string none 已经弃用
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 header。值可以是系统变量,例如:”username” : “${SAUCE_USERNAME}”
access_key string none 与 username 一样用于生成 Authorization header。像 username 一样,值也可以是系统变量。
proxy string none 使用代理访问 selenium server。支持 http, https, socks(v5), socks5, sock4, 和 pac。使用node-proxy-agent。Example: http://user:pass@host:port
desiredCapabilities object   在新建 session 之前传递给 Selenium WebDriver,可以用来指定浏览器名称和其他功能。例如:“desiredCapabilities” : {“browserName” : “firefox”, “acceptSslCerts” :true}。 完整的功能列表在这里
globals object   在测试代码中可以访问的全局变量,并且每次切换测试环境时可以重写该值。例如: *”globals” :{“myGlobal” : “some_global”}
exclude array   不包含的文件夹,接受字符串或模式字符串(relative to the main source folder)。例如:”exclude” : [“excluded-folder”] 或 :”exclude” : [“test-folder/*-smoke.js”]
filter string   接受字符串或模式字符串,与之不匹配的文件会被忽略。
log_screenshot_data boolean false 是否在日志(verbose模式)中记录屏幕截图的base64编码信息。
use_xpath boolean false 是否用 xpath 做为默认的元素选择策略。
cli_args object none 作用与 selenium 配置中的 cli_args 相同。 你可以在不同的测试环境配置中覆盖 selenium 中的配置。
end_session_on_fail boolean true 在测试终止的时候,自动关闭会话,通常会在断言失败后触发。
skip_testcases_on_fail boolean true 是否在任意测试用例测试失败后,跳过剩余的测试用例。
output_folder string|boolean   生成的测试报告存放目录, 该值覆盖 Basic settings 中的配置, 也可以设置为 false 不生成报告。
persist_globals boolean false Weather or not to persist use the same object instance for holding globals between testsuite runs or a (deep) copy of it.

e2e 测试(1)的更多相关文章

  1. Webpack单元测试,e2e测试

    此篇文章是续 webpack多入口文件.热更新等体验,主要说明单元测试与e2e测试的基本配置以及相关应用. 一.单元测试 实现单元测试框架的搭建.es6语法的应用.以及测试覆盖率的引入. 1. 需要安 ...

  2. 使用Angular CLI进行单元测试和E2E测试

    第一篇文章是: "使用angular cli生成angular5项目" : http://www.cnblogs.com/cgzl/p/8594571.html 第二篇文章是: & ...

  3. e2e测试框架之Cypress

    谈起web自动化测试,大家首先想到的是Selenium!随着近几年前端技术的发展,出现了不少前端测试框架,这些测试框架大多并不依赖于Selenium,这一点跟后端测试框架有很大不同,如Robot Fr ...

  4. E2E测试框架

    1. 目前E2E测试工具有哪些? 项目 Web Star puppeteer Chromium (~170Mb Mac, ~282Mb Linux, ~280Mb Win) 41427 nightma ...

  5. UT, FT ,E2E 测试的意思

    前端实现自动化就要借助到unit和e2e端到端测试了 一.unit测试(FT 就是Fucntion Test 功能测试,  注意不是: funciton函数 ...fucntion功能   不一样哦  ...

  6. e2e 测试 出现的错误

    每次开始学习vue的新知识时,总在环境这一块出现很多坑.这次我来记录一下,我在搭建vue e2e测试框架是踏过的坑吧. 我们都只知道,使用vue init webpack 项目名字<项目名字不能 ...

  7. angularjs e2e测试初步学习(一)

    e2e测试是从用户角度出发,认为整个系统都是一个黑盒,只有UI暴露出来. angularjs的测试框架是采用protractor. 1.创建文件 首先创建一个项目文件夹test,然后再创建两个文件,一 ...

  8. 利用 Rize 来进行 UI 测试或 E2E 测试

    之前我曾经在<Rize - 一个可以让你简单.优雅地使用 puppeteer 的 Node.js 库>一文简单介绍过 Rize 这个库.当时仅仅是介绍这个库本身,关于如何使用,我没有给太多 ...

  9. Node.js躬行记(11)——E2E测试

    Cypress是为现代网络构建的前端测试工具,解决了开发人员和 QA 工程师在测试应用程序时面临的关键痛点. 在这个测试框架中包含了E2E测试.集成测试和单元测试(内嵌了Mocha),我们需要的是它的 ...

随机推荐

  1. Spring中JdbcTemplate使用RowMapper

    package com.cxl.demo.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util. ...

  2. activity 的跳转

    在app文件夹上右键新建空的activity ,名称为DisplayMessageActivity, 修改layout文件夹下activity_display_message.xml <?xml ...

  3. PHP里获取一维数组里的最大值和最小值

    <?php $arr = ['10','100','50','90','2','5']; $min = min($arr); $max = max($arr); echo $min.PHP_EO ...

  4. vue模板编译

    Vue 的模板编译是在 $mount 的过程中进行的,在 $mount 的时候执行了 compile 方法来将 template 里的内容转换成真正的 HTML 代码. complie 最终生成 re ...

  5. 离线人脸识别C#类库分享 虹软2.0版本

    目前只封装了人脸检测部分的类库,供大家交流学习,肯定有问题,希望大家在阅读使用的时候及时反馈,谢谢!使用虹软技术开发完成 戳这里下载SDKgithub:https://github.com/dayAn ...

  6. Android 用虹软SDK做人脸识别

    人脸识别第三方sdk比较多,但是大多都是收费的或者限制次数什么的,虹软的效果还不错,全免费也不需要联网 V1.2版本使用和快速集成:https://www.jianshu.com/p/8dee89ec ...

  7. 基于虹软 2.0 人脸识别猜年龄 java版 demo

    首先感谢虹软,是你们提供这么好的SDK支撑了我们的想象力! 这是一个用javav编写的可视化应用,用户通过自己的脸和计算机进行交互,计算机则通过萌萌女孩的语音和用户对话.核心程序就是利用ArcFace ...

  8. 清理SuperMap iclient 三维插件的缓存批处理

    在windows任何位置,新建一个文本文件,将下面内容复制到文本文件中并保存,然后修改该文本文件后缀为.bat,鼠标点击执行即可完成清理工作~ @echo off title 清理三维缓存 @echo ...

  9. 猫眼电影爬取(三):requests+pyquery,并将数据存储到mysql数据库

    还是以猫眼电影为例,这次用pyquery库进行爬取 1.简单demo,看看如何使用pyquery提取信息,并将提取到的数据进行组合 # coding: utf-8 # author: hmk impo ...

  10. MySQL ICP(Index Condition Pushdown)特性

    一.SQL的where条件提取规则 在ICP(Index Condition Pushdown,索引条件下推)特性之前,必须先搞明白根据何登成大神总结出一套放置于所有SQL语句而皆准的where查询条 ...