python编程面向对象与基于模块的框架
完成面向对象的回顾和重新认识
实现模块的调用,基于老师说的模块理念(分层理念)
#package(包) 驼峰首字符小写,后边首字符大写 pyLearn py_learn
#module 命名类似于package
#class 命名首字母大写
#类 以及类相关的属性和方法
#对象 相关的属性和方法
init (对父类的重写,这时候会执行你的code)
干什么用?
生成对象的时候,首先要执行的内容,帮助对象完成首先要用的属性或者其他需要的方法
调用过程?什么时候被执行?
基类 -type
带下划线属于私有的,专有的
__new__载类,生成一片地址然后调用) -> init方法
init调用之前有动作
调用的过程是什么?
类是什么?类就是对对象的统一的描述,定义,声明 ——抽象
面向对象的思想
if __name__ == '__main__': #下面的是测试代码
mytest = learnClass #赋值,将类装载到内存中
mytest = learnClass() #加括号表示调用,实例化要用调用,通过类实例化了一个对象
@classmethod装饰器 类的方法
@staticmethod装饰器 静态方法 (传入普通参数)
创建一个包business 将功能放进里面,新建的py文件中function_module1.py
这就是封装 – 将你的代码抽象成类之后,将类放入一个包中的module,这就是封装
参数化
class Function1:
def __init__(self):
self.param="test"
def function_method(self,params):
#中间经过一系列
return params
创建一个test_cases包 ,创建一个module,专门针对business function_module1进行测试
python就是调用business包中的function_module1模块,模块中的类Function1
框架就是将抽象好的类,放到不同的包的模块中 – 模块化,分不同包的时候叫 分层设计(分层思想)
调用之前要导包,导入模块,导入模块中的类,这就是调用
from business.function_module1 import Function1
class TestFunction1:
def __init__(self):
pass
def test_method1(self,params,expectded_result):
#调用某这个方法,在测试人中,就是步骤,调用被测功能
func_result = Function().function_method()
#if 用法在这里就是测试中的断言,底下的内容叫测试用例
if func_result == expected_result:
print("pass")
else:
print("Fail")
自动化测试:使用代码实现对程序进行测试
自动化测试用例:
1.自动化测试被测对象 - 被测功能(方法)
2.自动化测试方法 - 调用被测功能
3.进行数据传参(测试数据,期望结果)
自动化测试框架的分层:
1.功能层 - 业务层,和业务相关的功能
2.common - 通用的功能
3.测试用例层 - 专门放测试用例叫test_cases包test_function模块
4.执行层 - 执行层组织用例,负责执行哪些测试用例,和用例用什么数据(test_perform)
5.数据层 - 放所以的测试数据(data)
6.report - 报告层(暂时放入文件中,后续,用unittest HTML TestRunner)
7.工具层 - utilities 专门放一些开发好的工具,用于帮助我们完成某些工作
8.数据解析层 - 专门负责对数据文件的解析后(data_parser)
写一个方法,调用另一个方法的好处
1.模块化
2.代码复用性
3.高内聚,低耦合
4.易维护
5.团队协作
数据文件的设计
1.方便阅读和理解
2.设计特征码 - 目的,告诉程序,你按照某种鬼册去解析文件
3.测试数据文件在处理过程中,严禁对数据进行修改
模块之间的调用关系:
功能层:存放一些的都是一些要测试的功能或者业务
执行层:运行程序,调用数据解析层和测试用例层
数据解析层:用来解析数据,需要导入测试数据
数据层:用来存放测试数据
测试用例层:进行断言,调用功能层