先上框架git链接:
https://gitee.com/yukarijiang/watcher#0-qzone-1-79223-d020d2d2a4e8d1a374a433f596ad1440
这个框架目前才刚刚起步,还有很多不完善和不适当的地方,但可以用于学习selenium以及小型的项目的自动化测试,同时也期望与对自动化测试感兴趣的朋友深入交流。先上框架结构:
config/ //配置文件夹
|——config.ini //配置文件
data/ //存放数据的文件
|——demo.xml //xml数据
driver/ //存放引擎文件
log/ //存放日志文件
|——2018-05-05/ //日志按天存储
|————170031.txt //每次运行的日志文件
report/ //测试报告输出文件
|——excel/ //excel测试报告
|————2018-05-05/ //测试报告按天存储
|——————203211.xls //每次运行的测试报告
|——html/ //html测试报告
|——image/ //截图
|————2018-05-05_203211/ //截图按照每次测试存储
src/ //核心代码目录
|——api/ //接口测试目录(暂未开发)
|——gui/ //UI测试目录
|————action/ //行为
|————page/ //页面
|————story/ //用户故事
uit/ //工具目录
index.py //入口文件
整个框架是按照用户故事进行组织的,主要用于自动验证按照用户故事操作是否正确,不用于发现各类型错误。之所以如此设计,在于首先要检测出错误需要编写大量的测试代码进行判断,其次维护成本也相当高,而笔者使用自动化测试的目的在于持续集成的过程中,保证主流程不出问题,即主要用户故事能走得通。
整个项目通过index.py单入口运行,即在项目目录下:python index.py即可运行。index.py中包括了每次测试的配置,比如日志、截图、报告的输出位置等。
uit/文件下为基础工具模块。包括:config.py(读取配置文件)、log.py(输出日志)、report.py(输出测试报告)等。
page/ 基于page-object的思想,将每个页面封装成一个类,页面的操作为类方法,本框架中page类中不处理数据,只进行dom的选择与操作。
action/ 文件下的action类为行为类、行为类用于给page类的方法填充数据,组合page类的操作成一个行为,例如示例中通过baidu进入csdn这个行为,包括了在baidu页面输入csdn,点击搜索的第一条链接进入csdn。
story/ 文件夹下即为用户故事类,每个用户故事由多个action串联而成。
基于以上的结构,page类为基础类,直接面向页面dom,action类只能调用page类的方法对dom进行操作,story类只能调用action类的方法,将一系列行为组织成一个完整的用户故事,其中story类中还包括了数据的还原,比如添加一个用户,测试完毕则删除这个用户。index.py里可配置多个story,对多个用户故事进行批量测试。
以上架构基于笔者对自动化测试不成熟的想法,若有不适当的地方,还请批评指正。