python代码封装
A. selenium python怎么封装方法
一、常用函数的封装
在使用selenium做web自动化测试的过程中,经常会碰到各种各样的问题,比如:
1、页面加载比较慢时,selenium查找元素抛出异常,导致脚本运行中止
2、写完脚本后发现代码逻辑不够清晰,维护困难,降低测试效率
所以很有必要对selenium进行封装使框架更适合公司的需求,下面是基类的封装,主要使用单例模式,可以将业务逻辑代码存放在不同的Python文件中
注:BASE_URL为博客园的登录地址
四、其他
按照此模式博友可根据公司具体的业务来实现自动化测试脚本,本文抛砖引玉,如有其他更好的想法可以一起探讨
B. Python中的封装有什么作用
日常生活中可以看到很多的汽车,汽车包括车轮、发动机、车架等零部件。可以在车架上安装车轮,然后安装发动机,最后安装其他零件,刷漆。就形成了汽车。这个过程,是把各种零件放到车架上的过程。但思考一下,对于开车的人,需要关注车的内部结构吗?答案显然是否定的。汽车对外提供了方向盘、油门等去调用内部结构从而进行行驶。由这个例子可以总结出,汽车就是各种零件经过封装得到的产物,同时提供给驾驶人操控汽车需要的接口设备。这就是生活中的封装。
我们可以看到生活中的封装有很多好处。具体有如下的几条好处:
①隐藏了实现细节,在使用时没必要关注具体实现。
②安全性好,内部细节隐藏了,就不能随意破坏。
③对外提供接口方便使用。
④可维护性好,方便修改实现,修改完成后,对外接口不变,对用户使用无影响。
⑤方便重用,任何一个会开车的人都可以驾驶汽车,只要对外的接口相同就行了。
总之,封装就是将抽象得到的属性和方法形成“类”,并将类内部信息进行隐藏,对外公开接口的机制。封装限制从类外访问,从而提升代码安全性和可维护性。
封装的内涵是把抽象得到的属性和方法进行了封装,对于方法,隐藏了具体的实现,提供了方法名供使用者调用。对于成员变量也进行隐藏,通过方法对外提供访问接口。通过封装,限制了直接访问成员变量,通过方法,增加验证逻辑,提高了安全性和可维护性。
封装的外延是按照内聚性、一致性、封装性、清晰性、完整性进行类的封装。
内聚性就是类应该描述一个单一的实体。例如,学生姓名和教师所带班级不是单一实体的属性,不能组合在一个类中。
一致性就是类、成员变量、方法名要有意义,并且顺序是成员变量、构造方法、普通方法。
封装性就是类中成员变量是私有属性,通过getter/setter访问。
清晰性是指类的结构应该是易于解释和理解的。
完整性是需要充分考虑多种不同用户设计,应该能通过属性和方法提供多种方案以适应用户不同需求。例如,字符串中有很多方法,同时这些方法可以组合完成各种任务。
关于Python的基础问题可以看下这个网页的视频教程,网页链接,希望我的回答能帮到你。
C. 我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗
可以的,只要把python模块转换成dll模块,利用Python自带的ctypes模块加载调用就行。
ctypes 是Python的外部函数库。它提供了与 C语言兼容的数据类型,并允许调用 DLL 或共享库中的函数。可使用该模块以纯 Python 形式对这些库进行封装。
ctypes导出了cdll对象,在 Windows 系统中还导出了windll和oledll对象用于载入动态链接库。通过操作这些对象的属性,你可以载入外部的动态链接库。cdll载入按标准的cdecl调用协议导出的函数,而windll导入的库按stdcall调用协议调用其中的函数。
(3)python代码封装扩展阅读:
加载调用DLL的相关方法:
1、加载DLL
加载的时候要根据你将要调用的函数是符合什么调用约定的。
stdcall调用约定:两种加载方式
Objdll = ctypes.windll.LoadLibrary("dllpath")
Objdll = ctypes.WinDLL("dllpath")
cdecl调用约定:也有两种加载方式
Objdll = ctypes.cdll.LoadLibrary("dllpath")
Objdll = ctypes.CDLL("dllpath")
其实windll和cdll分别是WinDLL类和CDll类的对象。
2、调用dll中的方法
加载dll的时候会返回一个DLL对象(假设名字叫Objdll),利用该对象就可以调用dll中的方法。 e.g.如果dll中有个方法名字叫Add(注意如果经过stdcall声明的方法,如果不是用def文件声明的导出函数或者extern “C” 声明的话,编译器会对函数名进行修改,这个要注意。)
调用:nRet = Objdll.Add(12, 15) 即完成一次调用。