设计思路:
本文整理归纳以往的工作中用到的东西,现汇总成基础测试框架提供分享。
框架采用python3 + selenium3 + PO + yaml + ddt + unittest等技术编写成基础测试框架,能适应日常测试工作需要。
1、使用Page Object模式将页面定位和业务操作分开,分离测试对象(元素对象)和测试脚本(用例脚本),一个页面建一个对象类,提高用例的可维护性;
2、使用yaml管理页面控件元素数据和测试用例数据。例如元素ID等发生变化时,不需要去修改测试代码,只需要在对应的页面元素yaml文件中修改即可;
3、分模块管理,互不影响,随时组装,即拿即用。
测试框架分层设计
- 把常见的操作和查找封装成基础类,不管是什么产品,可直接拿来复用
- 业务层主要是封装对象页面类,一个页面建一个类,业务层页面继承基础层
- 用例层针对产品页面功能进行构造摸拟执行测试
- 框架层提供基础组件,支撑整个流程执行及功能扩展,给用例层提供各页面的元素数据、用例测试数据,测试报告输出等
测试框架目录结构
编写用例方法
1 testinfo: 2 - id: test_login001 3 title: 登录测试 4 info: 打开抽屉首页 5 testcase: 6 - element_info: login-link-a 7 find_type: ID 8 operate_type: click 9 info: 打开登录对话框 10 - element_info: mobile 11 find_type: ID 12 operate_type: send_keys 13 info: 输入手机号 14 - element_info: mbpwd 15 find_type: ID 16 operate_type: send_keys 17 info: 输入密码 18 - element_info: //input[@class='keeplogin'] 19 find_type: XPATH 20 operate_type: click 21 info: 单击取消自动登录单选框 22 - element_info: //span[text()='登录'] 23 find_type: XPATH 24 operate_type: click 25 info: 单击登录按钮 26 - element_info: userProNick 27 find_type: ID 28 operate_type: perform 29 info: 鼠标悬停账户菜单 30 - element_info: //a[@class='logout'] 31 find_type: XPATH 32 operate_type: click 33 info: 选择退出 34 check: 35 - element_info: //div[@class='box-mobilelogin']/div[1]/span 36 find_type: XPATH 37 info: 检查输入手机号或密码,登录异常提示 38 - element_info: userProNick 39 find_type: ID 40 info: 成功登录 41 - element_info: reg-link-a 42 find_type: ID 43 info: 检查退出登录是否成功 login.yaml