什么是PageObject?
- 属于selenium的一种设计模式,套用在appium身上了(实践表明,合适,因为selenium和appium"本是同根生")
- 个人对于PO的理解就是,页面元素 - 页面业务操作步骤的方法 - 测试用例 (我知道抽象,大家自行谷哥了解下)
下图是我的代码结构:
Data:测试数据。后期准备把代码中会所有测试数据都整合到excel或者xml内,Data文件夹就是这个用处
PO:所有Page。以Base页面为基础(看下图分析,来理解PO)
Public:一些公共的方法,比如测试报告脚本,封装好的
Result:测试结果,包括测试报告和截图
TestCase:测试用例都放这儿
run_case:测试套件,利用HTMLTestRunner.py,输出测试报告到/Result下
Base内重新封装的是基础的webdriver方法和一些你自己测试用例有需要的公用方法,PO内的其他Page都是继承自Base
appium与selenium的唯一不同就是对driver的设置上
在这里driver的调用,我感觉自己还没写好,我的需求是只在Base内定义好driver,指定好端口,所有测试用例共用一个driver,直接在测试用例内调用,我调试过了,自己python水平也是一般,没改出来,后期我再改善一下这个。
直接在Page内封装整个业务流程的方法,测试用例中代码量会少很多。(当然写在测试用例中也是可以的)
简单说明下:
* 场景:登录业务
* Page内:a.输入用户名 b.输入密码 c.点击登录按钮;A.登录方法(包含abc)
* 测试用例内: 1.直接调用Page的A;2.顺序调用Page的abc
这两种方式各有各的利弊,各取所需吧
测试用例我用的是unittest
我这个demo没有写断言,没有打log,测试数据也没有放到外部文件。这些都是后期要改善的
关于报告的输出
通过测试套件去驱动HTMLTestRunner生成测试报告,并且加入了截图功能(这些都是参考selenium大神Ray的,请参照他的coding:https://coding.net/u/tsbc/p/PySelenium_PO/git)
总结
demo(https://github.com/JennyHui/appium)
整体看来框架的搭建是很简单的,但也算是五脏俱全吧(好吧,还差几个,我知道啦)。个人觉得对于框架怎么搭,用哪种设计模式,用哪种工具,选择性还是很多的。跟web类似的啊,关键字,PO,RF......各取所需吧各位,而且,不同的设计模式下,代码结构如何,也是看各人选择的。
下一阶段学习,就像我写的完善driver调用,打log,加断言,测试数据移至excel,有些人页面元素也想放到config内,这一点大家可以根据项目来权衡。
如果我可以,你也可以,因为我是菜鸟。请在一个礼拜之内搞定你的代码结构哦