wtf-web测试框架

wtframework的Python项目详细描述


wtf-web测试框架[![构建状态](https://travis-ci.org/wiredrive/wtframework.png?branch=master)(https://travis ci.org/wiredrive/wtframework)
===
https://github.com/wiredrive/wtframework

web测试框架(简称wtf)的目标是在selenium的基础上构建web驱动工具和库,为以可维护的方式测试web应用程序。目标是提供项目结构和工具,帮助qa/sdet专业人员快速建立和开发可配置、健壮且易于使用的验收级web
。最终目标是构建一个高度可配置、可维护的通用框架,易于使用。



installation
==


*pypi(pip)-http://www.pip-installer.org/en/latest/


pip install wtframework

project
=========


=>运行以下命令以初始化wtf测试的空项目结构。


wtf_init.py yourprojectname--示例


windows注意:.py文件可能不可执行,您可能必须在这些命令前面加上python命令的前缀。

python wtf_init.py您的项目——例如

这将创建项目的文件夹和包。您将看到如下内容:

/yourprojectname
/assets-将测试中使用的非代码文件放在此处。
/configs-配置文件的位置。
/data-数据文件(如csv文件)放在此处。
/reference screenshots-如果启用,参考屏幕截图放在这里。
/reports-运行测试时,测试结果XML文件将放在这里。
/screenshots-测试失败时的屏幕截图将放在这里。
/tests-测试代码的顶级包。
/flows-高级可重用多页流量。
/模型-数据模型在此处显示。(像数据库ORM代码一样)
/pages-页面对象放在这里。
/support-可重用的支持实用程序函数放在这里。
/test data-处理测试数据的自定义代码。
/tests-高级测试放在这里。



python path被设置为在wtf框架中运行测试。



运行测试
===



/run tests.py[-c configfile]

这将执行"测试/测试"文件夹中的单元测试。测试结果将
写入"reports/",错误期间拍摄的任何屏幕截图都将存储在
`screenshots/`文件夹中。




configuring eclipse/pydev environment
---------------------------
1.下载/安装eclipse。http://www.eclipse.org/
2.安装pydev插件。http://pydev.org/
3.转到eclipse->;首选项(或在windows上,此窗口->;首选项)
4.转到pydev->;解释程序python,然后打开libraries选项卡。
5.添加python站点包(pip将包安装到其中)
此时pydev环境应该能够识别安装的包。
6.在eclipse中,转到"文件"并创建一个新的pydev项目。
7.填写所需字段,并将生成的项目结构用作项目文件夹。这将创建必要的pydev项目文件,以便
允许您作为pydev项目处理此项目。
8。打开项目设置,然后在"pydev-pythonpath"设置下,将项目基目录添加为源文件夹。然后保存。

此时,您应该可以右键单击,选择"运行方式"并将测试
案例作为pyunit测试案例执行。



下载或克隆源。外星人nsion源代码包含在
`/browser plugins`目录下。
2。打开铬合金。
3.打开Chrome的"首选项"菜单,然后选择"扩展"
4。启用"开发者模式"复选框。
5.单击"加载解包扩展…"按钮。
6。然后选择"wtframework/browser plugins/"目录下的"chrome"文件夹。
7。此时应该安装插件。你可以通过点击chrome工具栏上的"wtf"扩展按钮,转到另一个网页来测试插件。
这将打开WTF页面对象实用程序窗口。





用于处理名为"wtf_config_reader"的配置的工具。默认情况下,它将查看/configs目录中的default.yaml文件。但是可以通过设置'wtf_env'变量来指定使用其他配置文件。这有助于
为不同的测试环境提供不同的配置文件。然后在您的ci
系统中,您只需在"configs/default.yaml"或其他配置文件中指定要使用的配置文件。


baseurl:yourtestserver.com

您可以使用
`wtf_config_reader`拉取存储在配置文件中的值,如下所示:


base_url=wtf_config_reader.get("baseurl")
webdriver.get(base_url+"/somelocation")


`configs/staging.yaml`,`configs/production.yaml`,等等…对于不同的
部署/测试环境。

设置"wtf_env"系统变量时,可以选择要使用的配置集
,或将其传递到命令中。

$>;echo"对qa运行测试"
$>;wtf_env=qa./run tests.py
$>;echo"针对暂存运行测试"
$>;wtf_env=stage./run tests.py



$>;echo"针对qa运行测试"
$>;/runtests.py--config=qa
$>;echo"针对暂存运行测试"
$>;./runtests.py--config=staging

这允许您只需切换一个环境变量就可以使测试环境不可知,跨多个配置运行。这有助于存储
环境设置和位置、帐户信息(如db login)、连接
字符串等。

您还可以指定要使用哪个webdriver的selenium设置。在"selenium"
设置下,您可以配置是否需要本地或远程/grid,以及使用哪个浏览器。因此,您也可以通过每次传递不同的配置文件来轻松地对不同的配置运行测试。


在远程网络驱动程序上运行。默认值为local
type:local
type:remote

设置为true,以重用同一浏览器。设置为false,则每次都使用新的浏览器
实例。如果设置为数字,这将确定浏览器
会话是否应在特定时间段后丢弃。
默认值为"true"
reusebrowser:true

在所有测试运行后终止selenium。在调试过程中禁用此选项会有帮助。在运行过程中,您通常希望在测试后保持此状态以清除
错误时截取浏览器屏幕快照。
截取屏幕快照:true

遇到新页面时截取参考屏幕快照。
截取参考屏幕快照:如果type=remote,则需要"远程"URL。将此设置为指向远程webdriver
连接字符串。
远程url:http://url.to.seleniumgrid:4444/wd/hub

safari
浏览器:firefox




然后当您想要获取webdriver的实例时,使用"wtf_webdriver_manager"来获取webdriver的实例。这允许您的测试不确定它正在实例化哪个webdriver。

更多端到端测试功能测试。为了利用这个功能,您的测试应该
扩展"wtfbasetest"基类。

wtfbasetest配有屏幕截图测试观察程序。还可以通过扩展"test watcher"类并重写其方法来实现自己的测试观察程序。这对于使用自己的操作创建自己的基本测试非常有用,例如在测试完成时将结果记录到测试用例管理中。如果您喜欢在不添加wtfbasetest的
功能的情况下进行测试,则可以使用"watchedtestcase"并对其进行扩展。



数据驱动测试
----
wtf framework提供了使用csv文件进行数据驱动测试的简单方法。数据
文件存储在"data/"文件夹中,可以使用实用工具
class`wtf_data_manager.get_data_file("nameofcsvfile")轻松访问。您可以使用"@ddt"和"@csv data"修饰符在这些csv行值上重复一个测试。


2.0

然后在"your_data_driven_test.py"中,您可以按如下方式引用这些值:

在类级别使用@ddt decorator。
@ddt
类testcsvdatadriventest(testcase):

然后使用@csv data decorator标记数据驱动的测试方法。
@csvdata("testdata.csv")
def测试_csv_datadriven(self,parameter_dic):
然后在测试中,您可以使用传递到测试中的参数作为字典,其中的键与CSV标题相对应。
animal=parameter dic['animal']
type=parameter dic['type']
size=parameter dic['size']
……




wtf提供了方便的chrome插件来帮助您创建页面对象。参见上面的chrome插件安装说明。chrome插件将帮助您快速生成
锅炉板代码、一些简单的验证方法,并帮助您完成
映射此页上的web元素的繁琐任务。

![图像](https://raw.github.com/wiredrive/wtframework/gh pages/imgs/wtf_panel_parts.png)




转到目标页。然后单击wtf工具栏按钮,然后选择"扫描页面"
2。将打开一个弹出窗口。您将看到一个表单,其中包含
命名pageobject、设置页面验证方法的字段,以及映射
页面元素的按钮。
3。请为页面对象填写适当的名称。
4.调整页面验证特性。您可能需要将它从字符串更改为正则表达式,并用通配符替换变量参数。
5。映射要包含的元素。映射元素,首先单击标记为"映射新元素"的按钮。您将返回到页面窗口,关闭
弹出对话框,然后单击要映射的元素。单击
元素后,您会注意到将在PageObject实用程序窗口中创建一个新条目。
填充字段并调整对象标识属性。如果字段中的
标识属性与页面上的元素不匹配,则字段
将变为红色。继续之前请先固定这些。
6.代码预览将显示在此窗口的底部。下载前查看
内容。
7.点击预览区上方的"下载"链接。这将允许您
下载此文件。将此文件保存到"yourproject/tests/pages"目录。
8.在代码编辑器中编辑此文件,并添加任何要公开的高级方法调用。然后您将拥有一个完全正常工作的页面对象。例如,如果您有一个
登录表单,那么您可能需要创建一个名为"login(username,password)"的方法,并且
抽象出登录到高级测试的行为。然后将
填写和提交表单的详细信息保留在页面对象方法体中。





您现在可以使用您创建的此页面对象,如下所示:


from wtframework.wtf.web.pages import pagefactory
from pages.homepage import homepage

homepage=pagefactory.create_page(homepage)
homepage.login(username,password)您需要实现此部分。

或者,您可以使用pageutils等待页面加载。这将允许您指定等待此页完成加载的超时时间(秒)。


超时=60)

注意:这将使用pageobject的`_validate_page()`检查页是否与预期页匹配。除了url
或标题验证之外,最好在页面上使用web元素,这样页面验证在页面内容出现在屏幕上之前不会成功。

一旦创建了pageojbect,您需要进入并编辑该文件,并对映射和页面验证例程进行任何
更改。作为一个良好的实践,编写方法以将事务逻辑公开为更高级别的方法调用是很好的
,这样可以避免用低级别的ui逻辑混淆高级别的测试和测试流。

http://engineeringquality.blogspot.com/2012/12/python quick and dirty pageobject.html



====
*wtframework wiki-https://github.com/wiredrive/wtframework/wiki
*文档-https://wtframework.readthedocs.org/en/latest/
*google groups-https://groups.google.com/forum/!论坛/wtframework


misc
=====


许可证
----
此框架是免费和开源的。根据GPLv3授权。有关
许可证的详细信息,请参阅"license.txt"。


如何贡献
----
您可以分叉此存储库。要获取未标记为跳过运行的单元测试,
您需要编辑或为自己的配置文件提供selenium设置的值。


http://nvie.com/posts/a-successful-git-branching-model/
*/master[![构建状态](https://travis-ci.org/wiredrive/wtframework.png?branch=master)(https://travis-ci.org/wiredrive/wtframework)-包含最新版本/稳定代码。
*/开发[![构建状态](https://travis-ci.org/wiredrive/wtframework.png?branch=development)](https://travis-ci.org/wiredrive/wtframework)-包含正在进行的工作和排队等候的功能e下一个版本。
*/feature/name of feature-一个长期项目中正在进行的工作的功能分支。
*/release/x.x.x-当前正在修复/测试的即将发布的版本。
*/hotfix/x.x.x-当前正在修复/测试的即将发布的修补程序。




ci脚本在travis上运行,
https://travis ci.org/wiredrive/wtframework


若要提交代码更改,请针对开发分支提交拉取请求。

有关其他帮助方式,请参见此处。
[https://github.com/wiredrive/wtframework/wiki/如何帮助。]

credits
----
david lai<;david@wiredrive.com>;

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Spring 4升级后未加载java应用程序上下文   java Android 2.3.3 internet可以在我的Galaxy S上运行,但不能在我的Galaxy选项卡上运行?(许可?)   java通过不改变其原始位置对大小写字母进行排序   java Spring Boot一直在破坏我的电脑。。。sts的最佳配置是什么。Windows 10上的ini文件?   css Java Spring+引导问题   java Jackson将GeoJsonPoint序列化为纬度/经度   xml Java Transformer:如何将其结果生成OutputStream?   java如何更改字体、文本大小和设置文本位置?   在JavaSpringHibernate3.6.3中,如何告诉一个方法等待,直到获得锁,以及如何重试失败的事务?   java安卓服务代替线程   Java Swing使用鼠标移动JFrame