跳转到主要内容

Web功能测试抽象层

项目描述

FuncBrows是一个围绕各种功能Web测试工具的相对轻量级抽象包装器。它的目的是允许创建单一单元测试,这些测试可以在多个测试工具上运行,配置最少。这将允许在单个API中创建功能性和系统测试。

由于需要,API将相对简单,不会支持某些工具的高级功能。这旨在成为最低共同点,尽管选定的工具可用,如果需要更复杂的测试(以工具可移植性为代价)。

当前支持

有两个完全支持的测试工具

  • Selenium RC (1.*)

  • zc.testbrowser

设计初衷是随着时间的推移增加更多功能,但这些是满足我自身需求的基础。

运行测试

FuncBrows附带一个完整的测试套件,用于测试所有可用方法。它使用twisted创建一个本地已知的web服务器,可用于输出预期结果。要运行它,您需要:* twisted * twisted web * trial(twisted测试工具,通常包含在twisted发行版中)要运行测试,请执行

trial test_funcbrows

API

FuncBrows的主要目标之一是拥有一个简单且干净的API。然而,底层工具中存在一些无法轻易解决的瑕疵。我将尝试提供一些API示例,并解释已实施的任何解决方案。有关API每个方法的更完整示例,请参阅test_funcbrows.py。

实例化

实例化FuncBrows是底层工具表现最明显的地方,因为您必须选择您想要使用的工具。

基本方法需要一个浏览器类型和一个要测试的URL

f = FuncBrows('testbrowser', 'http://localhost:80')

这将实例化一个指向localhost,端口80的zc.testbrowser实例

Selenium实例需要额外的参数(selenium服务器的地址和端口)

f = FuncBrows('\*firefox3', 'http://localhost', host = '127.0.0.1', port = 4444)

表单使用

FuncBrows在使用任何特定表单进行修改之前需要指定要操作的表单名称。未设置此值将导致ValueError。这可以防止表单控件模糊。然而,zc.testbrowser有关的问题在于页面上的表单没有id。下面提供了一些解决方案。

设置表单中文本框的值

f = FuncBrows('testbrowser', 'http://localhost:80')
f.open('/')
f.form_name = 'test-form'
f.set_form_text_field('q', 'test')
f.submit_form()

页面内容

目前只有三种方法可以获取当前加载页面上的元数据和数据

location

当前页面位置(URL)的属性

page_title

当前页面标题的属性

page_content

页面的HTML内容

瑕疵

遗憾的是,完全干净的抽象并不完全可能,因此有几个地方需要特别注意。

  1. Selenium目前在与AJAX加载的页面中存在困难,因为它们不会触发页面加载事件。已尝试解决这个问题,您可以在click()方法中传递“internal=True”。这将使Selenium不期望页面加载,并直接继续。

  2. 没有id或name的表单可能会使zc.testbrowser出现问题。已实现一个解决方案,但并不完全令人满意。如果将form_name设置为“*”,它将使用页面上的第一个表单。

项目详情


下载文件

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

源代码分发

FuncBrows-0.1.7.tar.gz (8.5 kB 查看哈希值)

上传时间 源代码

由以下机构支持

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