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判断错误内容
这样一来,可以少写很多代码
python nose测试框架全面介绍八---接口测试中非法参数的断言的更多相关文章
- python nose测试框架全面介绍十---用例的跳过
又来写nose了,这次主要介绍nose中的用例跳过应用,之前也有介绍,见python nose测试框架全面介绍四,但介绍的不详细.下面详细解析下 nose自带的SkipTest 先看看nose自带的S ...
- python nose测试框架全面介绍七--日志相关
引: 之前使用nose框架时,一直使用--logging-config的log文件来生成日志,具体的log配置可见之前python nose测试框架全面介绍四. 但使用一段时间后,发出一个问题,生成的 ...
- python nose测试框架全面介绍六--框架函数别名
之前python nose测试框架全面介绍二中介绍了nose框架的基本构成,但在实际应该中我们也会到setup_function等一系列的名字,查看管网后,我们罗列下nose框架中函数的别名 1.pa ...
- python nose测试框架全面介绍五--attr介绍
之前写了一系列nose框架的,这篇介绍下attr tag 在nose框架中attr用来标识用例,使得在运行时可以通过标识来执行用例,之前在nose测试框架全面介绍四中有说明,但没有说明清楚,这里再总结 ...
- python nose测试框架全面介绍一
一.简介 nose 是python自带框架unttest的扩展,使测试更简单高效:nose是一个开源的项目,可以在官网上下载源码 1.快速安装 有以下几中安装方式: easy_install ...
- python nose测试框架全面介绍四
四.内部插件介绍 1.Attrib 标记,用于筛选用例 在很多时候,用例可以分不同的等级来运行,在nose中很增加了这个功能,使用attrib将用例进行划分 有两种方式: ef test_big_do ...
- python nose测试框架全面介绍三
三.nose的测试工具集 nose.tools模块提供了一系列的小工具,包括测试执行时间.异常输出及unittest框架中所有的assert功能. 为了使写用例更加容易,nose.tools提供了部分 ...
- python nose测试框架全面介绍二
二.基本使用 nosetest脚本的使用(在安装完nose之后) nosetests [options] [(optional) test files or directories] 我们可以使用配置 ...
- python nose测试框架全面介绍十二 ----用例执行顺序打乱
在实际执行自动化测试时,发现我们的用例在使用同一个资源的操作时,用例的执行顺序对测试结果有影响,在手工测试时是完全没法覆盖的. 但每一次都是按用例名字来执行,怎么打乱来执行的. 在网上看到一个有意思的 ...
随机推荐
- 录制iPhone屏幕并转成gif方案
app的开发经常会碰到需要演示一个交互,或者一个bug的情况,通常涉及一连串的操作以及操作的反馈,这是文字,或截图都无法表达的,视频的话还得播放器参与,最好的一个想法应该是录制屏幕然后再转成gif图片 ...
- vue-router 2 跳转失败原因
axios.post('/internal/user/login_from_mobile ',{ mobile: this.logPrefix+this.formInline1.mobile, pas ...
- localstorage和sessionstorage上手使用记录
通过阅读各路大神对web存储locastorage和sessionstorage的用法解析,自己试用了一下,在此留个备忘. 在项目中,如果用到很多次storage,要存储很多数据,就要把它封装成函数了 ...
- Two FIFOs of length 253 with 8-bits
FIFO 先入先出队列(First Input First Output,FIFO) 可以实现数据缓存. 一.FIFO的一些重要参数: 1.length:未知,待查 //补充:学长说:“FIFO一般只 ...
- mysql中查看视图的元数据?
需求描述: 查看视图的元数据的方法. 操作过程: 1.通过查看information_schema数据库下的views表来查看视图的定义语句 mysql> select definer,view ...
- Reg命令使用详解 批处理操作注册表必备
首先要说明:编辑注册表不当可能会严重损坏您的系统.在更改注册表之前,应备份计算机上任何有价值的数据 只有在别无选择的情况下,才直接编辑注册表.注册表编辑器会忽略标准的安全措施,从而使得这些设置会降低性 ...
- Python 和C#的交互
IronPython是一个.NET平台上的Python实现,包括了完整的编译器.执行引擎与运行时支持,能够与.NET已有的库无缝整合到一起. IronPython已经很好的集成到了.NET frame ...
- 4种实现多列布局css
摘要: 多列布局在网站应用中也是经常见到的,今天就分享4中多列布局. display:table <style> .table { width: auto; min-width: 1000 ...
- [Converge] Backpropagation Algorithm
Ref: CS231n Winter 2016: Lecture 4: Backpropagation Ref: How to implement a NN:中文翻译版本 Ref: Jacobian矩 ...
- Laravel查询构造器简介
数据表 CREATE TABLE IF NOT EXISTS students( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NO ...