1、线性代码可以实现的功能为什么要通过框架(selenium+webdriver+关键字驱动+数据驱动)来实现
线性代码没有任何可以被优化被复用的价值的东西
企业:请一个自动化测试开发的目的是研发出公司可复用的自动化测试框架,而不是写一个只有自己可用的测试框架
1、能够复用到各种需要的项目中的
2、能够让其他的测开人员可以一同维护
3、能够以最低的使用成本和学习成本来上手
4、能够方便于后期维护和更新修改
而要实现这样的效果,就需要测试框架的设计和研发。
2、一个简单的selenium+webdriver线性代码
Ps:代码中的find_element_by_xpath/id/name方法已经被禁用了,统一改成find_element()
案例:
from selenium.webdriver.common.by import By
element_agree=driver.find_element(By.CSS_SELECTOR,'div.pop_footer>a.reg_btn.reg_agree')
3、什么是关键字驱动
关键字驱动:
selenium中实现所有的自动化操作都是基于webdriver来实现的。
常规的自动化领域里面,主题核心:selenium(webdriver)、appium(sppiumdriver)、接口(requests)
Driver.get()
Driver.quit()
在实际的自动化应用或者实际的企业框架研发中,所有的自动化测试代码都是基于一个特定模式来进行编写的
一般主流的模式:
1、关键字驱动
2、POM设计模型
关键字驱动就是将所有的行为封装成特定的关键字,通过关键字的调用来实现行为的执行。
4、基于关键字驱动实现的框架核心业务思路
在自动化中,将常用的操作行为,进行二次封装,生成特定的关键字,有需要的时候就调用。
关键字驱动的设计如何实现:
1.原则性问题:关键字驱动一定是结合数据驱动来实现的
2、结构设计:
1、代码与数据分离
2、代码中逻辑代码与测试代码分离
最终成型的结构:
1、逻辑代码
2、测试用例
3、测试数据
5、关键字驱动+数据驱动形式下实现的自动化测试框架的设计模式
读取到数据,基于固定格式的数据内容进行拼接,拼接后的内容作为关键字所需要的参数,进行传入,从而执行对应的关键字,再将结果与预期进行对比,从而获得单条测试用例执行是否通过的结果
6、设计理念和设计思路(下面是通俗的话)
基于关键字驱动结合数据驱动,然后将主要常用的一些内容把它封装起来,形成一个类对象,然后将这个类对象作为一个工具提供的类,然后结合unitTest或者ddt或者是pyTest来进行测试用例的一个整合,或者通过Excel或者yaml的形式去做这个数据驱动的文件,通过这种文件读写的形式,来结合到关键字的调用,去实现的一系列的流程,再通过一个写入的操作,做断言,那我们就完成了一套基本的测试用例。
7、反射机制
可以节省代码