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内容
瑕疵
遗憾的是,完全干净的抽象并不完全可能,因此有几个地方需要特别注意。
Selenium目前在与AJAX加载的页面中存在困难,因为它们不会触发页面加载事件。已尝试解决这个问题,您可以在click()方法中传递“internal=True”。这将使Selenium不期望页面加载,并直接继续。
没有id或name的表单可能会使zc.testbrowser出现问题。已实现一个解决方案,但并不完全令人满意。如果将form_name设置为“*”,它将使用页面上的第一个表单。
项目详情
FuncBrows-0.1.7.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 74cda760bb66ab034062603ba43b3fd82b1965a3b0a7282ef2e591e52b968e99 |
|
MD5 | 780ee9df2c8759b140dedc988c7c6391 |
|
BLAKE2b-256 | 20194635fbed1ad4064e7c470b10556b382e8ec8bf124e4484bba2959092098d |