Python自动化测试框架--自然语言用例

前言:

       主使用到的有config配置文件、不定长参数、取类方法属性等知识点。

       完成这样一个工厂后,写用例就不需要在用例类中去写很多特定场景的方法了。只需要在excel里中文调用便能达到效果,通俗易懂,使用自动化更适合新人上路 

1、先设计用例

如下图,case_id为1的是一条常规的测试用例,不多说了

case_id为2

          interface是commfun,这是一个标识,是commfun就要使用

          method是中文,方法名,工厂中方法的中文定义

          url、data、expected、Test result 是方法参数,数量区间[0,4]

2、代码设计

在用例类里设计

第一、在用例类里面将取到的case字段interface判断是不是commfun,如果是,就调用工厂入口,如果不是,继续执行用例。

传参,工厂方法里使用不定长参数,随例定义参数传值都行,

    if case['interface'] == 'commfun':
        """
        如果接口是公共方法,那么字段如下
        method:公共方法名
        title: 返回接果
        url:参数
        data:参数
        """
        _isOk, _strLog = self._opear_keyword(method=case['method'],
                                             result=case['title'],
                                             param_1=case['url'],
                                             param_2=case['data'],
                                             param_3=case['expected'],
                                             param_4=case['Test result'])
    else:
        #执行用例

第二、工厂方法实现

一、先在配置文件里将方法与中文方法名配置好,如下图

二、方法名初始化,方法类初始化

self.con = Config()
self.syskey = Handkeyworld()
self.userkey = Userkeyworld()
self.keyword = dict(self.con.items('userkeyword'))
self.syskeyword = dict(self.con.items('syskeyword'))

三、取出不定长参数里的method键,就是方法中文名,见这行method = self.keyword[kwargs['method']]

四、通过方法中文名称取到公共方法后,取出公共方法,见这行func = getattr(self.userkey, method, None),然后使用func便可调用到公共的方法了。

 

 

def method_factory(self, *args, **kwargs):
    """
    用例公共方法工厂
    默认传的参数为:
    result:用来接收结果的变量,格式可为${abc}
    method:调用的方法,这里设计方法都使用中文
    param_x:参数,数量不限。格式可为${abc}会替换为已存在的数据
    """
    #m_bool = False
    if kwargs.__len__() > 0:
        try:
            kwargs['method']
        except KeyError:
            return False, 'keyword:用例[method]字段方法没参数为空.'
        try:
            method = self.keyword[kwargs['method']]
            m_bool = True
        except KeyError:
            try:
                method = self.syskeyword[kwargs['method']]
                m_bool = False
            except KeyError:
                return False, 'keyword:方法[' + kwargs['method'] + '] 不存在,或未注册.'

    if m_bool:
        func = getattr(self.userkey, method, None)
        _isOk, _strLog = func(*args, **kwargs)
        return _isOk, 'keyword:[' + kwargs['method'] + '] 方法:.' + _strLog
    else:
        fuc = getattr(self.syskey, method, None)
        _isOk, _strLog = fuc(*args, **kwargs)
        return _isOk, 'keyword:[' + kwargs['method'] + '] 方法:' + _strLog

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魂尾ac

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值