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

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

这时,我们可以用上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判断错误内容

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

python nose测试框架全面介绍八---接口测试中非法参数的断言的更多相关文章

  1. python nose测试框架全面介绍十---用例的跳过

    又来写nose了,这次主要介绍nose中的用例跳过应用,之前也有介绍,见python nose测试框架全面介绍四,但介绍的不详细.下面详细解析下 nose自带的SkipTest 先看看nose自带的S ...

  2. python nose测试框架全面介绍七--日志相关

    引: 之前使用nose框架时,一直使用--logging-config的log文件来生成日志,具体的log配置可见之前python nose测试框架全面介绍四. 但使用一段时间后,发出一个问题,生成的 ...

  3. python nose测试框架全面介绍六--框架函数别名

    之前python nose测试框架全面介绍二中介绍了nose框架的基本构成,但在实际应该中我们也会到setup_function等一系列的名字,查看管网后,我们罗列下nose框架中函数的别名 1.pa ...

  4. python nose测试框架全面介绍五--attr介绍

    之前写了一系列nose框架的,这篇介绍下attr tag 在nose框架中attr用来标识用例,使得在运行时可以通过标识来执行用例,之前在nose测试框架全面介绍四中有说明,但没有说明清楚,这里再总结 ...

  5. python nose测试框架全面介绍一

    一.简介      nose 是python自带框架unttest的扩展,使测试更简单高效:nose是一个开源的项目,可以在官网上下载源码 1.快速安装 有以下几中安装方式: easy_install ...

  6. python nose测试框架全面介绍四

    四.内部插件介绍 1.Attrib 标记,用于筛选用例 在很多时候,用例可以分不同的等级来运行,在nose中很增加了这个功能,使用attrib将用例进行划分 有两种方式: ef test_big_do ...

  7. python nose测试框架全面介绍三

    三.nose的测试工具集 nose.tools模块提供了一系列的小工具,包括测试执行时间.异常输出及unittest框架中所有的assert功能. 为了使写用例更加容易,nose.tools提供了部分 ...

  8. python nose测试框架全面介绍二

    二.基本使用 nosetest脚本的使用(在安装完nose之后) nosetests [options] [(optional) test files or directories] 我们可以使用配置 ...

  9. python nose测试框架全面介绍十二 ----用例执行顺序打乱

    在实际执行自动化测试时,发现我们的用例在使用同一个资源的操作时,用例的执行顺序对测试结果有影响,在手工测试时是完全没法覆盖的. 但每一次都是按用例名字来执行,怎么打乱来执行的. 在网上看到一个有意思的 ...

随机推荐

  1. 虚拟机中安装linux系统步骤

    参考:http://blog.csdn.net/u013111221/article/details/50856934 后面参考:http://blog.csdn.net/chenweitang123 ...

  2. vim在系统剪切板的复制与粘贴

    https://blog.csdn.net/zhangxiao93/article/details/53677764

  3. swagger的说明、配置及使用

    一.What is swagger? 官方介绍:Swagger是一个规范且完整的框架,提供描述.生产.消费和可视化RESTful Web Service.专业角度:Swagger是由庞大工具集合支撑的 ...

  4. 解决Spring Boot中,通过filter打印post请求的 request body 问题

    http://slackspace.de/articles/log-request-body-with-spring-boot/ (filter + RequestWrapper:最优雅的写法) ht ...

  5. 扫盲 -- What's MOOC ?

    FAQ 1. MOOC是什么? 2. xMOOC又是什么? 它与之前在中国大陆网络上风靡一时的国外大学"公开课"有什么区别?3. xMOOC什么时候, 怎样出现的? 4. 有哪些网 ...

  6. argc和argv

    ARGc和ARGv中的ARG指的是"参数"(外语:ARGuments, argument counter 和 argument vector ) argc: 整数,用来统计你运行程 ...

  7. mysql 行转列 (case when的使用)

    现有 table1 如下 table2 如下 需要统计:各个部门每个月的绩效总和 实现如下:

  8. 【代码审计】CLTPHP_v5.5.3后台任意文件删除漏洞分析

      0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...

  9. PHP代码审计笔记--弱类型存在的安全问题

    0x01 前言 PHP 是一门弱类型语言,不必向 PHP 声明该变量的数据类型,PHP 会根据变量的值,自动把变量转换为正确的数据类型. 弱类型比较,是一个比较蛋疼的问题,如左侧为字符串,右侧为一个整 ...

  10. MQ java 基础编程(一)

    本文转自:http://www.blogjava.net/i369/articles/88035.html 编写人:邬文俊 编写时间 : 2006-2-16 联系邮件 : wenjunwu430@gm ...