跳转到主要内容

用于在各种产品上运行W3C web-platform-tests的 Harness

项目描述

wptrunner是一个用于运行W3C web-platform-tests测试套件的 Harness。

安装

wptrunner预计将使用pip安装到虚拟环境中。对于开发,可以使用 -e 选项安装

pip install -e ./

运行测试

安装后,应该可以使用 wptrunner 命令来运行测试。

wptrunner 命令接受多个选项,其中以下选项最为重要

--product (默认为 firefox

要测试的产品: b2gchromefirefoxservo

--binary (必需)

测试产品(浏览器)的二进制文件的路径。

--metadata (必需)

包含测试元数据的目录的路径。 [1]

--tests (必需)

包含web-platform-tests签出的目录的路径。

--prefs-root (仅当测试Firefox二进制文件时必需)

包含Firefox测试工具首选项的目录路径。 [2]

还有许多其他选项可用;使用 --help 列出它们。

示例:如何启动wptrunner

要在OS X环境中测试Firefox Nightly构建,您可能可以使用以下类似示例启动wptrunner:

wptrunner --metadata=~/web-platform-tests/ --tests=~/web-platform-tests/ \
--binary=~/mozilla-central/obj-x86_64-apple-darwin14.0.0/dist/Nightly.app/Contents/MacOS/firefox \
--prefs-root=~/mozilla-central/testing/profiles

要在OS X环境中测试Chromium构建,您可能可以使用以下类似示例启动wptrunner:

wptrunner --metadata=~/web-platform-tests/ --tests=~/web-platform-tests/ \
--binary=~/chromium/src/out/Release/Chromium.app/Contents/MacOS/Chromium \
--product=chrome

示例:如何运行测试子集

要仅将测试运行限制为特定web-platform-tests子目录中的测试,请使用 --include 与目录名;例如

wptrunner --metadata=~/web-platform-tests/ --tests=~/web-platform-tests/ \
--binary=/path/to/firefox --prefs-root=/path/to/testing/profiles \
--include=dom

输出

默认情况下,wptrunner将整个输出作为原始JSON消息直接输出到stdout。这对于将其输入到其他工具很有用,但对于人类阅读输出并不理想。

作为替代,您可以使用 --log-mach 选项,它以适合人类阅读的合理格式提供输出。此选项需要一个值:写入 mach 格式化输出的文件路径,或者写入stdout的“-”(一个连字符)。

使用 --log-mach 时,完整原始JSON日志的输出仍然可用,来自 --log-raw 选项。因此,要输出完整的原始JSON日志到文件并将人类可读的摘要输出到stdout,您可能需要使用以下类似示例启动wptrunner:

wptrunner --metadata=~/web-platform-tests/ --tests=~/web-platform-tests/ \
--binary=/path/to/firefox --prefs-root=/path/to/testing/profiles
--log-raw=output.log --log-mach=-

期望数据

wptrunner旨在用于一个环境,其中不仅需要知道哪些测试通过了,而且还需要比较运行结果。因此,可以将之前运行的输出存储在一系列类似于ini的“期望文件”中。此格式在下文中有说明。要生成期望文件,请使用带 –log-raw=/path/to/log/file 选项的 wptrunner。然后可以使用它作为 wptupdate 工具的输入。

期望文件格式

有关测试的元数据,特别是它们的预期结果,存储在一种修改过的类似于ini的格式中,该格式旨在便于人类编辑,同时也便于机器更新。

需要指定元数据的每个测试文件(因为具有非默认期望或因为禁用,例如)在 metadata 目录中都有一个相应的期望文件。例如,包含失败测试的测试文件 html/test1.htmlmetadata 目录中会有一个名为 html/test1.html.ini 的期望文件。

期望文件的示例:

example_default_key: example_value

[filename.html]
  type: testharness

  [subtest1]
    expected: FAIL

  [subtest2]
    expected:
      if platform == 'win': TIMEOUT
      if platform == 'osx': ERROR
      FAIL

[filename.html?query=something]
  type: testharness
  disabled: bug12345

该文件由两个元素组成,键值对和部分。

部分由方括号内的标题分隔。标题本身中的任何关闭方括号都可以用反斜杠转义。每个部分可以包含任意数量的键值对和任意数量的子部分。为了在不使用结束部分标记的情况下使每个部分的数据(即键值对和子部分)清楚属于哪个部分,每个部分的数据(即键值对和子部分)必须使用空格缩进。缩进只需一致即可,但建议每级使用两个空格。

在测试期望文件中,文件提供的每个资源都有一个单独的部分,部分标题是测试URL中最后一个/之后的部分。具有子部分的测试可能为那些子测试提供子部分,其中标题是子测试的名称。

简单的键值对形式为

key: value

请注意,与ini文件不同,只有:是有效的分隔符;=将不会按预期工作。键值对还可以有如下形式的条件值

key:
  if condition1: value1
  if condition2: value2
  default

在这种情况下,每个条件都会依次评估,并且值是第一个匹配条件右侧的值。如果没有条件匹配,则使用无条件默认值。如果没有条件匹配且未提供默认值,则相当于键不存在。条件使用类似于Python的简单表达式语言,例如

if debug and (platform == "linux" or platform == "osx"): FAIL

对于测试期望,可用的变量是run_info中包含的变量,对于桌面是versionosbitsprocessordebugproduct

在文件顶层(任何部分之前)指定的键值对是特殊的,因为它们为文件其余部分提供默认值,例如

key1: value1

[section 1]
  key2: value2

[section 2]
  key1: value3

在这种情况下,在部分1中,key1的值将是value1,而key2的值将是value2;而在部分2中,key1的值将是value3,而key2将是未定义的。

Web平台测试工具包了解几个键

expected

必须评估为可能的测试状态,以指示测试的预期结果。当字段不存在时,隐含的默认值是PASS或OK。

disabled

任何值都表示测试被禁用。

type

测试类型,例如testharnessreftest

reftype

reftest比较的类型;要么是==,要么是!=

refurl

reftest的参考URL。

项目详细信息


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

wptrunner-1.14.tar.gz (74.7 kB 查看哈希)

上传时间 源代码

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面