什么是 PageObject?

下图是我的代码结构:
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 内封装整个业务流程的方法,测试用例中代码量会少很多。(当然写在测试用例中也是可以的)
简单说明下:

测试用例我用的是 unittest
我这个 demo 没有写断言,没有打 log,测试数据也没有放到外部文件。这些都是后期要改善的

关于报告的输出

通过测试套件去驱动 HTMLTestRunner 生成测试报告,并且加入了截图功能(这些都是参考 selenium 大神 Ray 的,请参照他的 coding:https://coding.net/u/tsbc/p/PySelenium_PO/git

总结

demo(https://github.com/JennyHui/appiumDemo/tree/master/pythonDemo%20v1.0
整体看来框架的搭建是很简单的,但也算是五脏俱全吧(好吧,还差几个,我知道啦)。个人觉得对于框架怎么搭,用哪种设计模式,用哪种工具,选择性还是很多的。跟 web 类似的啊,关键字,PO,RF......各取所需吧各位,而且,不同的设计模式下,代码结构如何,也是看各人选择的。

下一阶段学习,就像我写的完善 driver 调用,打 log,加断言,测试数据移至 excel,有些人页面元素也想放到 config 内,这一点大家可以根据项目来权衡。

如果我可以,你也可以,因为我是菜鸟。请在一个礼拜之内搞定你的代码结构哦


↙↙↙阅读原文可查看相关链接,并与作者交流