模块化设计
- 模块化用来分隔,组织和打包软件
- 每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要的功能
- 在系统结构中,模块是可组合、分解和更换的单元
- 模块化是一种处理复杂系统分解成为更好的可管理的方式
- 它可以通过在不同组件设定不同的功能,把一个问题分解成多个小的独立、相互作用的组件、来处理复杂、大型的软件
模块化设计模型进一步优化代码架构
- 问题:各个模块的testcase层级代码中都存在通用的方法,并没有复用。各个模块的pageobject层级代码里都存在通用的操作
- 目标:复用这些代码,给各个模块的testcase层级代码使用
优化方案-封装公共基类
-
common包:封装基础操作模块
- 网页基础操作模块:记录网页里的基础操作动作。
- 测试用例基础操作模块:记录测试用例里用来判断和检查使用的通用方法。
-
网页基础操作模块
common包-->page_action.py文件中-->class PageBase- locate 定位
- click 点击
- input_text 输入文本
- clear 清空
- get_text 获得静态文本
- get_input 获得文本框数据
- switch_to_default 切换默认主网页
-
封装页面基类
-
修改页面对象类
- from common.page_action import PageBase
- class LoginPage(PageBase):
-
测试用例基础操作模块:记录测试用例里用来判断和检查使用的通用方法
common包里新建测试用例基础模块:假设叫做case_action.py在该模块里定义一个类,假设叫做CaseBase,负责管理各个模块的测试用例代码中的通用操作方法。
分析:setUp、tearDown……写在此类中后,如何在testcase层级的各个代码中使用它?
思路:把这个类CaseBase作为testcase层级的各个代码中测试用例类的父类来使用。
新的问题:测试用例类原来有父类是unittest.TestCase。
新方案:多重继承机制来实现。
读取csv工具模块
utils包: 存储工具模块
-
读取csv工具模块:读取csv格式的文件
utils-->read_csv.py-->class CSVUtil: __init__ get_list_data
- 测试用例基础操作模块
- 定义用例基类
- setUp方法
- 其他通用方法