在 Zope2 中运行 Selenium 测试套件
项目描述
Zelenium:Zope2 上的硒测试
概述
该产品允许开发人员在其 Zope 实例中创建 TTW Selenium 测试套件,以便对其站点进行基于浏览器的功能测试。
先决条件
一个有效的 Zope2 安装。有关在virtualenv中设置 Zope 2.12 的说明,请参阅安装 Zope,或 使用 zc.buildout 安装 Zope 以在构建中安装它。
安装产品
如果您使用的是 buildout,请将Products.Zelenium添加到 实例部分的eggs =参数中。
如果使用virtualenv方法开发 Zope2 软件,请将 Products.Zelenium添加到包的setup.py中的install_requires参数中, 或者 在安装 Zope2 后运行bin/easy_install Products.Zelenium 。
最后,如果您使用的是传统的 INSTANCE_HOME 安装:
在临时位置解压缩 tarball。
将Zelenium目录复制或移动到您的 INSTANCE_HOME的Products目录中。
重新启动 Zope。
使用 Zelenium
您可以在 Zope 站点内的任何位置添加Zuite对象。它表现为标准的有序文件夹,但有几个不同之处:
它的index_html是 Selenium 中熟悉的“TestRunner.html”视图。
它从名称以test开头的所有 OFS.Image.File 对象派生测试套件(在左上角 iframe 中)。您可以使用 OrderedFolder 支持来修改测试用例文件的运行顺序。
它提供了一个“Zip”操作,允许您将测试套件、所有测试用例和支持的 Selenium Javascript / CSS 文件导出为一个独立的 zip 文件。
报告针对 Zelenium 的错误
请使用Launchpad报告您发现的产品错误,以及提交补丁、请求功能等。
添加测试
测试只是名称以test开头的File实例。它们的内容类型应该是text/html,并且应该包含一个表格,该表格定义了组成测试用例的步骤。
有关表结构和 Selenese 语言的文档,请参阅http://selenium.thoughtworks.com/testrunner.html。
使用附加元类型作为测试用例
在测试套件的“属性”选项卡上,您可以添加/修改套件允许作为测试用例的元类型列表。例如,添加“脚本(Python)”允许您在 PythonScripts 中定义测试用例。
嵌套测试套件
每个测试套件都会自动包含它所包含的任何套件的测试用例。您可以利用此功能在层次结构中组织测试用例,在单独的段中运行它们,或者一次全部运行。
包括来自文件系统的测试
测试套件现在有一个属性filesystem_path;如果设置,套件将递归地从该路径指向的目录 / 下的文件中加载测试用例。
要包含的文件列表通过以下规则计算:
如果 testsuite_name 属性包含目录中存在的文件的名称,则假定它包含包含测试的文件列表,每行一个。测试用例将按照文件中指示的顺序呈现,并且测试用例可能包含多次。
如果 testsuite_name 属性为空但目录包含文件.objects,则假定它包含要包含的文件列表,每行一个;只有那些文件/子目录(如果存在)将被包括在内。在这种情况下,测试用例将按照文件中指示的顺序显示,然后是子目录中的任何测试用例。
否则,如果套件的属性filename_glob不为空,它将被扩展(通过 Python 的glob.glob)以计算文件名列表。测试用例将按字母顺序显示,然后是子目录中的任何测试用例。
否则,任何文件都将被视为测试用例。测试用例将按字母顺序显示,然后是子目录中的任何测试用例。
导出档案
在“Zip”选项卡上,提供文件名并单击“下载”按钮。Zuite 对象将构造一个包含以下内容的 zip 文件:
- 索引.html
“TestRunner.html”框架页面
- 测试套件.html
测试用例文件列表(呈现为静态 HTML)
- 测试*
您的测试用例文件(如果 ID 没有扩展名,则附加.html )
该存档还将包含驱动浏览器机器人的每个支持.js和.css 文件。
创建快照
在“Zip”选项卡上,提供文件名并单击“下载”按钮。Zuite 对象会构造一个与上述内容相同的 zip 文件,然后将其作为 File 对象保存在自己的内容中。
使用 tcpwatch 生成测试用例
从 Shane Hathaway 的网站下载tcpwatch产品:
解压并在其“HTTP 代理”模式下运行 tcpwatch,并打开记录。例如,以下命令在端口 9999 上运行代理,将请求/响应数据记录到目录 /tmp/recorded_scenario:
$ python /path/to/tcpwatch/ tcpwatch.py \ -p 9999 -r /tmp/recorded_scenario
将浏览器配置为在 localhost 端口 9999 上使用 HTTP 代理。
单击您的站点,使用您正在测试的功能。
停止代理。运行generator.py脚本,指向 tcpwatch 正在录制的目录:
$ python /path/to/Zelenium/generator.py \ --logfile-directory=/tmp/recorded_scenario \ --output-file=test_case_name.html
编辑生成的测试用例,删除/更正各个步骤。
将测试用例上传到 Zelenium Zuite 并运行它。
从测试运行中获取结果
Selenium 具有允许测试运行者将结果数据从自动测试运行上传到服务器的功能。
像往常一样从浏览器调用测试套件,但将查询字符串?auto=true附加到 URL,例如:
Selenium 将运行所有测试用例,然后将其结果数据上传到您套件的postResults方法。(请注意,您不再需要站点根目录中的postResults PythonScript,因为最新版本的 Selenium 发布到该名称相对于测试套件)。
Zelenium 产品更新日志
1.0.3 (2010-11-10)
删除setuptools_bzr要求,因为该软件包导致安装中断。相反,添加一个替换sdist命令,如果无法导入setuptools_bzr ,该命令将中止。
1.0.2 (2010-05-05)
添加 setuptools_bzr 作为设置要求,以避免未来的棕色包发布。
修复包含非 ASCI 文本的结果视图的渲染。感谢 Leo Rochael 的测试和修复。修复 lp:575415。
更新了 README 以指示 Zope2 的先决条件,并指向其安装文档。
1.0.1 (2010-04-07)
仅打包更新,固定棕色包发布(减去元数据文件)。另外,请注意将错误跟踪器从 www.zope.org 移动到 Launchpad。
1.0 (2010-04-07)
Zope 2.12 下的 Eggified、测试和删除弃用。
从svn.zope.org移动到 Launchpad。
将包含的 selenium 更新为 selenium-core 0.8.3。
应用了 Rob Miller 的修复程序,使 Zelenium Zuite 对象在存在5:traverse的情况下正常工作,从而使index_html成为显式的默认视图。
更正了 README 中的文档以捕获测试运行的结果(auto=1 -> auto=true,与 Selenium 文档一致)。感谢 Yoshinori Okuji 指出这一点。
0.8 (2006/05/16)
通过包装在 ZIP 文件创建期间呈现的文件系统对象来修复单元测试 - OFS.Image 中的代码想要获取 REQUEST 并使用 RESPONSE。
找到了如何使对 ExternalEditor 的依赖成为可选的(感谢 Andreas Jung 的错误报告)。
从清单中删除空文件名,以避免无限递归。
添加了 testsuite_name 属性,该属性允许从单个文件系统目录中的测试用例构建多个测试套件。
升级到硒版本 0.6
套件现在递归遍历所有“文件夹”子对象,寻找测试(例如,允许通过 CMF 的 FileSystemDirectoryView 从磁盘加载测试)。感谢 Malcom Cleaton 的补丁!
在 __init__.py 中定义 zelenium_globals 以便能够注册selenium目录以用作 CMF 皮肤目录。
如果在 zope.conf 中将 debug-mode 设置为“on”,则基于文件系统的测试用例文件在每次使用时都会重新加载,以简化基于文件系统的测试套件的开发。此行为模拟 CMF 文件系统目录视图在调试模式下所做的事情。
将存储库移至 Subversion:svn+ssh://svn.zope.org/repos/main/Zelenium/
0.7 (2005/06/07)
升级以使用 Selenium 0.4.0 中的 Selenium“核心应用程序”。有关更改的摘要,请参阅http://selenium.thoughtworks.com/release-notes.html。
0.6 (2005/05/09)
添加抑制在快照/下载中包含 Selenium 支持文件的功能。
添加对从映射目录路径返回测试用例的支持,包括通过该路径的子目录进行递归。目前,实现存在以下问题:
- o 它只为测试用例创建 OFS.Image.File 对象(没有模板,
脚本等)
为 Zuite.__getitem__ 行为添加单元测试,包括支持文件。
0.5.1 (2005/05/07)
通过添加图标,使结果视图中的通过/失败测试用例在打印表示中更加明显。注意:目前,我们通过嗅探测试用例的 HTML 来寻找“粉红色”背景。
应用 selenium-devel 列表中的补丁来修复postTestResults中测试用例 HTML 提取中的回归。
将发布的结果文件夹放入其自己的类中,从 Folder 派生(将模板移出到 PageTemplateFile)。
进一步修复了递归 ZIPfile 生成,包括在生成的 HTML 中规范化 URL。
扩展 zuite 单元测试以测试listTestCases和 manage_createSnapshot以及递归 ZIPfile 生成。
0.5 (2005/05/04)
更新为使用 Selenium 0.3.0 版中的“TestRunner 核心”。有关详细信息,请参阅http://selenium.thoughtworks.com/release-notes.html。
为 Zuite 类添加单元测试。
使 ZIPfile 生成与嵌套套件一起使用。
0.4.1 (2005/05/02)
修复manage_main中 ExternalEditor 链接的损坏。
在显示测试表时补偿 ID 中未填充的整数(使它们正确排序)。
0.4 (2005/04/27)
使 Zuite 实例递归地包含其 Zuite 子级的测试用例(以便更容易地在层次结构中组织测试用例)。
通过新的testcase_metatypes属性,允许单个 zuites 覆盖可以是测试用例的元类型列表。
强制 Zuite 对象显示顺序支持,即使在 ExternalEditor 存在的情况下,它的猴子修补程序似乎也让它绊倒了。如果产品可用,则显示 EE 图标
注意:我们正在分叉OFS/dtml/main.dtml 和 ExteranalEditor/manage_main.dtml 中的版本以显示订单支持,这是一个非常残酷的 hack。相反,我们可能应该修复 ExteranalEditor,并撕掉分叉的副本。
0.3.1 (2005/04/26)
在postResults期间记录服务器端数据:Zope 版本字符串、产品名称和版本。
在postResults中捕获了额外的请求参数:用户代理、HTTP 主机、远程地址)。
0.3 (2005/04/25)
添加了 postResults处理代码以将结果捕获为套件的子文件夹。
0.2.1 (2005/04/21)
更正为输入小部件发出的 HTML(关闭 tr 标签)。
修复代码中的解压错误,该错误会影响对“外国”主机的请求。
处理 XML-RPC 请求(例如,Epoz 回调到服务器以运行 Tidy)。
0.2 (2005/04/20)
添加了脚本generator.py以从 tcpwatch 创建的请求/响应日志文件创建 Selenium 测试用例文件。
允许测试用例是 PageTemplates 以及 Files,以允许通过测试套件的属性进行间接访问(例如,对于用户 id/密码)。
0.1 (2005/04/15)
初始发行