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


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

    比如:

    类名定义不规范!

    定义的类缺少注释!

    函数名不规范!

    定义的函数缺少注释!

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

    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。

  • 相关阅读:
    POJ 1990 MooFest
    python的unittest測试框架的扩展浅谈
    星云測试- Android应用深度体检专业平台
    HDOJ 1507 Uncle Tom&#39;s Inherited Land*
    产品设计
    Linux网络编程--wireshark分析TCP包头的格式
    java读取中文分词工具(一)
    为datatable添加自增列
    Oracle 自己主动内存管理 SGA、PGA 具体解释
    TCP/IP基础
  • 原文地址:https://www.cnblogs.com/uncleyong/p/8616856.html
Copyright © 2020-2023  润新知