UI自动化流程


第一步你先介绍selenium提供了哪些方法,提供了8种定位方式,我个人一般是喜欢分层做,一般会分3~4层。

第一层把selenium的所有公共的方法做一个二次的封装,比如我们的一些send.keys,点击click,还有查找元素,还有我的显示等待,静态等待以及后退前进等等,一些常用的方法,
包括进入切换窗口,进入ifname框,做一个单独的封装。分包完之后它可以做一个基类,这个基类我可以理解为是做一个父类。这是相当于一个基类层。

第二层一般是什么?第二层一般是咱们的一个业务层,一般相当于咱们项目的就业务层我会写咱们项目的一些代码逻辑,就包括像我们一些添加用户、修改用户、删除用户等等这些逻辑的话,它可能会需要用到咱们send.keys输入,还有click点击,还有一些用
到显示等待等操作,首先继承基类,有二次封装的selenium的方法的基类,然后继承之后,通过调用父类、基类的方法来进行一个操作。

第三层一般把第三层把一些测试的数据做一下封装,这测试的数据封装完之后,然后第二层业务层来调用我们测试的数据。

然后我会把一些公共的模块,一些常用的方法,公共的模块又单独封装一层,这一层叫公共层。比如unittest里面有专门处理咱们日志、log的 Py文件、发邮件的,还有生成报告的操作。
还有 pymysql,专门处理我们数据库的校验的东西,所有是放在这一层。

然后通过分层的形式,管理个人的用例,最终通过unittest的框架,unittest是一个type的框架,然后他给我们提供了很多方法,提供了很多丰富的断言方法。然后这个框架里面还涉及到Set up和tearDown、set up class和tearDownclass,把前置的步骤会放到set up class
里面,比如ui自动化是不是打开浏览器,然后最大化窗口包括静态元素的等待,是放到set up class里做一个封装,然后tearDownclass是相当于我们在处理最后的逻辑的时候,要通过tearDownclass来关闭所有的窗口,来处理我后置的代码。

后置代码处理完之后,通过 Discovery来做批量跑,所有test case的下面用例跑完之后通过HTMLTestRuuner这个模块来生成一个测试报告,
因为selenium的方法进行了二次封装,就二次封装我在关键的步每一步我会做一个try和Excelp的做一个异常补货,如果这一步没有定位到或这一步输入报错了,元素加载各方面各种问题,
或者遇到一些动态id突然没有定位到报错了,就通过异常捕获,不会影响下一步的操作,然后异常捕获到之后我就会通过selenium做一个截图,截图完之后然后通过logging来做一个写日志,

写完日志之后,然后我又做了截图,后面的话整体先看报告,看完报告上面有没有什么问题?还会打开一个新增用户的一个窗口,打开完之后我首先会干嘛?
为了能确保完全打开到它,确保之后我是又拿他的heads来跟我实际的一个值做一个对比,好比我通过 Self.driver.title拿到当前窗口的一个title,
拿到一个title跟我们预期的title做一个对比,看这个断言是否成功,如果断言成功,我认为当前我们打开这个窗口是没有问题的。
Ok好,如果断言失败,自然就会抛异常,抛异常到时候我们报告中就会有所体现。好,这是一个大概我们一个整体的做了一个分层处理的逻辑。

你可能感兴趣的:(自动化,python,单元测试)