python nose测试框架全面介绍八---接口测试中非法参数的断言

在测接口时,会有这样的场景,输入非法的参数,校验返回的错误码及错误内容

通常做法为发请求,将错误的返回结果拿出,再进行对比匹配;但存在一个问题,需要再写错误返回分析函数,不能与之前正常发请求的函数共用。

这时,我们可以用上assertRaises、assertRaisesRegexp;python 2.7中unittest中叫assertRaises,nose.tools中叫assert_raises、assert_raises_regexp

一、unittest中的assertRaises


看看官方说明吧:

可以对异常和告警使用上面两个方法进行断言。

 看个例子吧:

import unittest

def mode(dividend,divisor):
    remainder = dividend % divisor
    quotient = (dividend - remainder) / dividend
    return quotient,remainder

class RaiseTest():
    def test_raise(self):
        self.assertRaise(ZeroDivisionError, mode,7,0)

    def test_raise_regexp(self):
        self.assertRaiseRegexp(ZeroDivisionError, r'.*?Zero', mode,7,0)

if __name__ == '__main__':
    unittest.main()

注意:里面的引用函数是不带()的,直接是mode

           异常名的也是不带引号的,如果使用自定义的异常是要先引入的

二、nose中的assertRaises

还是上面那断代码,改用nose方式

#coding:utf-8
'''
Created on 2018年1月4日
@author: hu
'''
from nose.tools import assert_raises,assert_raises_regexp

def mode(dividend,divisor):
    remainder = dividend % divisor
    quotient = (dividend - remainder) / dividend
    return quotient,remainder

class RaiseTest():
    def test_raise(self):
        assert_raises(ZeroDivisionError, mode,7,0)
        
        
    def test_raise_regexp(self):
        assert_raises_regexp(ZeroDivisionError, r'.*?Zero', mode,7,0)

执行结果也是一致的

三:接口测试中常见的用法

根据上面的断言特证,我们在接口测试中底层的请求封装中可以直接类似这样写:

def show_xxxxx(self, id):
        """查看xxxx,id为参数"""
        url = "xxxx/%s" % str(volume_id)
        resp, body = self.get(url)
        body = json.loads(body)
        self.expected_success(200, resp.status)
        return body

其中expected_success是自己的封装,里面封装了抛错,这里就不举例了

然后在实际测异常参数时,就可以这么写

def test_get_invalid_xxxxx_id(self):
        # Negative: Should not be able to get xxxxx with invalid id
        self.assertRaises(你自己定义的错误类型,
                          self.show_xxxxxx, '#$%%&^&^')

或者用assertRaiseRegexp判断错误内容

 

这样一来,可以少写很多代码

 

转载于:https://www.cnblogs.com/landhu/p/8192295.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值