0
点赞
收藏
分享

微信扫一扫

通过元类规范接口自动化测试脚本:类名首字母大写、类及类下的方法必须有非空注释

深夜瞎琢磨 2022-02-17 阅读 23


还在为接口脚本规范烦恼么?

比如:

类名定义不规范!

定义的类缺少注释!

函数名不规范!

定义的函数缺少注释!

而这些,都会大大降低脚本的可读性以及可维护性。

ok,不管是写脚本的人忘了还是什么其它原因,我们可以通过元类来对脚本做出一些规范,代码如下:

import types
class Mymeta(type): # 继承默认元类的一堆属性
def __init__(self,class_name,class_bases,class_dic):
# 类名首字母必须大写
# if not class_name.istitle(): # 如果是ChinesePeople就不行
if not (ord(class_name[0]) >=65 and ord(class_name[0])<=90): # 只需要首字母在A-Z即可
raise TypeError('类名【%s】的首字母必须大写'%class_name)

# 类必须要有非空注释
if '__doc__' not in class_dic or not class_dic['__doc__'].strip():
raise TypeError('必须有注释,且注释不能为空')

# 类中方法必须要有非空注释
# print(class_dic)
for k,v in class_dic.items():
# print(k, v)
if isinstance(v, types.FunctionType):
# print(v)
f = getattr(self, k)
if hasattr(f, '__doc__'):
# print(c.__doc__)
if not f.__doc__:
raise TypeError('方法【%s】必须有注释,且注释不能为空'%k)

super(Mymeta,self).__init__(class_name,class_bases,class_dic)

def __call__(self, *args, **kwargs): # 重写type类的__call__方法,obj=Chinese('jack',age=18)
print(self) #self=Chinese
print(args) #args=('jack',)
print(kwargs) #kwargs={'age': 18}

class Chinese(object,metaclass=Mymeta):
'''
中文人的类
'''
country='China'

def __init__(self,namem,age):
'''123'''
self.name=namem
self.age=age

def talk(self):
"""talk方法"""
print('%s is talking' %self.name)


Chinese('jack',age=18) # Chinese.__call__(Chinese,'jack',18)



是不是so easy呢?确实很easy。



============================= 提升自己 ==========================

、声明:如有侵权,请联系删除。

============================= 升职加薪 ==========================


举报

相关推荐

0 条评论