使用框架来对web页面进行自动化测试,提高测试效率,本篇只阐述框架的搭建,不简述如何下载python,selenium,和selenium的基本语法
框架图
control层:包含各种控件,如Button、select等基本元件的操作
page层:将各类页面封装成类,并提供页面操作函数
case层:通过调用页面操作实现测试用例
control层
该层包含三个类:basePage、browserEngine、logger类,分别为页面控件基本操作类,浏览器操作类,日志类
1.basePage类部分代码如下:
在这个类可以把查找元素的各种方法、对元素的点击、右击、输入、清除等操作都封装在这个类中
**2.browserEngine类部分代码如下:
3.logger类部分代码如下
TIPS:在测试该类的时候遇到几个问题:
1.log_dir该文件夹需提前建立好
2.在路径等都没问题情况下,运行用例发现在无报错情况下,error不打印出正常,控制台和log文件都没有info日志打印出,后来发现我给两个handler设置的级别一个是info,一个是error,而logging这个类库默认的日志级别是warning,比Info的级别高,因此无法打印出Info级别的日志,这时只需要修改一下默认的日志级别即可:
self.logger.setLevel(logging.INFO)
3.开始对handler的setLevel的理解是,set一个级别的日志才会打印该级别日志,因此给每个handler设置了两个级别:INFO和ERROR(原谅我学Java的时候没有好好学习这个日志),导致日志文件无内容输出,后发现,只需要set最低级别即可,高于该级别的日志都会被打印出来。
4.在其他类中引用logger类:
并调用 logger.info()和logger.error()方法即可
Page层
这一层主要是调用control中的方法,实现页面的操作即可,以登录页面为例:
case层
该层我利用了unittest框架,来实现测试用例,先贴一段代码:
TIPS:
1.要引入unittest包
2.类要继承unittest.TestCase类
3.setUpClass和tearDownClass用于初始化用例和结束用例
4.执行该类出现一个问题:setUpClass方法开始未添加@classmethod注解,会导致每次执行一个用例就打开关闭一次浏览器,这样浪费资源也烦,加上该注解后,完美解决此问题
5.对于uniitest的更多信息,可以参考这个链接,了解更深入:https://www.jianshu.com/p/3aad32ed83bf?from=timeline
总结
以上就是这几天搭建的自动化测试框架,目前是一个demo版,还有更多的功能需要完善,总体上来说还是比较简单的,但也是因为参考了几篇写的不错的博客,跟着一步步搭建起来的。最开始写webUI的测试脚本都是直接每个页面单独的写,findElement真的很浪费时间,这样封装起来,可以提高代码编写效率和可读性。
参考博文如下:
【1】:https://blog.csdn.net/sinat_34817187/article/details/82018099
【2】:https://blog.csdn.net/sinat_34817187/article/details/84661496?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-13.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-13.nonecase
【3】:https://blog.csdn.net/qq_36072270/article/details/105345562?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase