跳转到主要内容

在Zope2中运行Selenium测试套件

项目描述

Zelenium: Zope2上的Selenium测试

概述

此产品允许开发者在他们的Zope实例内创建TTW Selenium测试套件,以便对他们网站进行基于浏览器的功能测试。

先决条件

安装产品

如果您使用buildout,请将Products.Zelenium添加到实例部分的eggs =参数。

如果使用virtualenv方法开发Zope2软件,请将Products.Zelenium添加到您的包的setup.py中的install_requires参数,或者安装Zope2后直接运行bin/easy_install Products.Zelenium

最后,如果您使用传统的INSTANCE_HOME安装方法

  1. 在临时位置解压tarball。

  2. Zelenium 目录复制或移动到您的 INSTANCE_HOME 的 Products 目录。

  3. 重启 Zope。

使用 Zelenium

您可以在 Zope 网站的任何位置添加一个 Zuite 对象。它作为一个标准顺序文件夹,有一些区别

  • 它的 index_html 是来自 Selenium 的“TestRunner.html”视图。

  • 它从所有以 test 开头的 OFS.Image.File 对象中推导出测试套件(在左上角的 iframe 中)。您可以使用有序文件夹支持来修改测试用例文件的运行顺序。

  • 它提供了一个“Zip”操作,允许您将测试套件、所有测试用例以及支持的 Selenium Javascript / CSS 文件作为一个单独的、自包含的 zipfile 导出。

针对 Zelenium 报告错误

请使用 Launchpad 报告您发现的针对产品的错误,以及提交补丁、请求功能等。

添加测试

测试只是以 test 开头的 File 实例。它们应该具有 text/html 的内容类型,并应包含一个表格,该表格定义了组成测试用例的步骤。

有关表格结构和 Selenese 语言的文档,请参阅 http://selenium.thoughtworks.com/testrunner.html

将其他元类型作为测试用例使用

在测试套件的“属性”标签页上,您可以添加/修改套件允许作为测试用例的元类型列表。例如,添加“Script (Python)”允许您在 PythonScripts 中定义测试用例。

嵌套测试套件

每个测试套件自动包含它包含的任何套件的测试用例。您可以利用此功能以层次结构组织测试用例,单独运行它们,或全部一起运行。

从文件系统中包含测试

测试套件现在有一个属性,filesystem_path;如果设置,则套件将从指向该路径的目录下的文件递归加载测试用例。

要包含的文件列表通过以下规则计算

  • 如果 testsuite_name 属性包含目录中存在的文件名,则假定它包含包含测试的文件的列表,每行一个。测试用例将按照文件中指示的顺序呈现,并且测试用例可以多次包含。

  • 如果 testsuite_name 属性为空,但目录包含一个文件 .objects,则假定它包含要包含的文件列表,每行一个;将仅包含这些文件/子目录(如果存在)。在这种情况下,测试用例将按照文件中指示的顺序呈现,然后是子目录中的任何测试用例。

  • 否则,如果套件的属性 filename_glob 非空,则它将通过 Python 的 glob.glob 展开,以计算文件名列表。测试用例将按字母顺序呈现,然后是子目录中的任何测试用例。

  • 否则,任何文件都将被视为测试用例。测试用例将按字母顺序呈现,然后是子目录中的任何测试用例。

导出存档

在“Zip”选项卡上,提供文件名并点击“下载”按钮。Zuite 对象将构建一个包含以下内容的 zip 文件

index.html

“TestRunner.html”框架页面

TestSuite.html

测试用例文件列表(呈现为静态 HTML)

test*

您的测试用例文件(如果 ID 没有扩展名,则附加 .html

存档还将包含驱动 browserbot 的每个支持 .js.css 文件。

创建快照

在“压缩”选项卡中,输入文件名并点击“下载”按钮。Zuite对象将构造一个包含上述相同内容的zip文件,并将其保存为其自身内容的File对象。

使用tcpwatch生成测试用例

  1. 从Shane Hathaway的网站下载tcpwatch产品

    http://hathawaymix.org/Software/TCPWatch

  2. 解压并以“HTTP代理”模式运行tcpwatch,开启记录功能。例如,以下命令在9999端口上运行代理,将请求数据/响应数据记录到目录/tmp/recorded_scenario

    $ python /path/to/tcpwatch/ tcpwatch.py \
        -p 9999 -r /tmp/recorded_scenario
  3. 配置您的浏览器以在本地主机9999端口上使用HTTP代理。

  4. 浏览您的网站,测试您要测试的功能。

  5. 停止代理。运行generator.py脚本,指向tcpwatch记录的目录

    $ python /path/to/Zelenium/generator.py \
       --logfile-directory=/tmp/recorded_scenario \
       --output-file=test_case_name.html
  6. 编辑生成的测试用例,删除/更正各种步骤。

  7. 将测试用例上传到Zelenium Zuite并运行。

从测试运行中捕获结果

Selenium有一个功能,允许测试运行器将自动化测试运行的结果数据上传到服务器。

像往常一样从您的浏览器中调用测试套件,但将查询字符串?auto=true附加到URL,例如:

https://127.0.0.1:8080/test_suite?auto=true

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添加为setup需求,以避免未来的brown-bag版本。

  • 修复了包含非ASCII文本的结果视图的渲染问题。感谢Leo Rochael进行测试和修复。修复了lp:575415。

  • 更新README以指示Zope2先决条件,并指向其安装文档。

1.0.1 (2010-04-07)

  • 仅更新打包,修复brown-bag发布(除元数据文件外)。另外,注意将错误跟踪器从www.zope.org移动到Launchpad。

1.0 (2010-04-07)

  • 在Zope 2.12下进行了Eggify、测试和删除弃用。

  • svn.zope.org迁移到Launchpad。

  • 更新了包含的selenium到selenium-core 0.8.3。

  • 应用了Rob Miller的修复,使Zelenium Zuite对象在存在five:traverse的情况下可用,使index_html成为显式默认视图。

  • 修正了README中的文档,以捕获测试运行的输出结果(《auto=1》变为《auto=true》,与Selenium文档保持一致)。感谢Yoshinori Okuji指出这一点。

0.8 (2006/05/16)

  • 通过包装在ZIP文件创建期间渲染的文件系统对象来修复单元测试,OFS.Image中的代码想要获取REQUEST并使用RESPONSE。

  • 找到了使对ExternalEditor的依赖项可选的方法(感谢Andreas Jung的bug报告)。

  • 从清单中删除了空文件名,以避免无限递归。

  • 添加了testsuite_name属性,允许从单个文件系统目录中的测试用例构建多个测试套件。

  • 升级到selenium版本0.6

  • 套件现在递归遍历所有“文件夹”子对象,寻找测试(例如,允许通过CMF的FileSystemDirectoryView从磁盘加载测试)。感谢Malcom Cleaton的补丁!

  • 在__init__.py中定义zelenium_globals,以便能够将selenium目录注册为CMF皮肤目录。

  • 如果在zope.conf中将debug-mode设置为“开启”,基于文件系统的测试用例文件每次使用时都会重新加载,以简化基于文件系统的测试套件的开发。这种行为模仿了CMF Filesystem Directory Views在开启debug-mode时的行为。

  • 已将仓库移动到Subversion:svn+ssh://svn.zope.org/repos/main/Zelenium/

0.7 (2005/06/07)

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单元测试,以测试listTestCasesmanage_createSnapshot,以及递归ZIPfile生成。

0.5 (2005/05/04)

0.4.1 (2005/05/02)

  • 修复了manage_main中外部编辑器链接的损坏。

  • 在测试表显示中对非填充整数ID进行补偿(使其正确排序)。

0.4 (2005/04/27)

  • 使Zuite实例递归包含其Zuite子代测试用例(以便更容易地对测试用例进行分层组织)。

  • 允许单个zuites通过新的testcase_metatypes属性覆盖可以测试的元类型列表。

  • 即使存在外部编辑器(其猴子补丁似乎会破坏它),也强制Zuite对象显示顺序支持。如果产品可用,显示EE图标

    注意:我们正在分叉OFS/dtml/main.dtml和ExteranalEditor/manage_main.dtml中的版本,以公开顺序支持,这是一个相当暴力的黑客行为。我们可能需要修复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)

  • 初始发布

项目详情


下载文件

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

源代码分发

Products.Zelenium-1.0.3.tar.gz (1.4 MB 查看哈希值)

上传时间 源代码

支持者