用于在各种产品上运行W3C web-platform-tests的 Harness
项目描述
wptrunner是一个用于运行W3C web-platform-tests测试套件的 Harness。
安装
wptrunner预计将使用pip安装到虚拟环境中。对于开发,可以使用 -e 选项安装
pip install -e ./
运行测试
安装后,应该可以使用 wptrunner 命令来运行测试。
wptrunner 命令接受多个选项,其中以下选项最为重要
- --product (默认为 firefox)
要测试的产品: b2g、chrome、firefox 或 servo。
- --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.html 在 metadata 目录中会有一个名为 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中包含的变量,对于桌面是version、os、bits、processor、debug和product。
在文件顶层(任何部分之前)指定的键值对是特殊的,因为它们为文件其余部分提供默认值,例如
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
测试类型,例如testharness或reftest。
- reftype
reftest比较的类型;要么是==,要么是!=。
- refurl
reftest的参考URL。
项目详细信息
wptrunner-1.14.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8db85ed9b1d4dfc53f054e77f13f034d3150ea03a6e0628d610c7845b7077d24 |
|
MD5 | 217be7060d4a5b6ddb5837a9ef323fbc |
|
BLAKE2b-256 | fd2b4bbab66bbdce872a9f940092243c59cc447e90fe0a00e564f2d2c0278660 |