问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python:assert_raises() 怎么用啊,有哪些参数? 请说得详细些,先谢谢了!

发布网友 发布时间:2022-04-18 13:01

我来回答

2个回答

懂视网 时间:2022-04-18 17:23

本篇文章给大家带来的内容是关于python assert的用法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

python assert 句语格式及用法很简单。通常程序在运行完之后抛出异常,使用assert可以在出现有异常的代码处直接终止运行。 而不用等到程序执行完毕之后抛出异常。

python assert的作用

python assert如果发生异常就说明表达示为假。可以理解表示式返回 值为假 时就会触发异常。

assert语句的语法格式

assert expression [, arguments]
assert 表达式 [, 参数]

附加说明:assert也可以用于多个表达式的: assert expression1, expression2。
注意:表达式=false 时,则执行其后面的异常。

我们看几个示例
1:单个表达式:

a = 1assert a < 0,
 '出错了,a大于0 啊'
 print('这里不会
输出')

输出:

Traceback (most recent call last):
 File "main.py", line 3, in <module> 
 assert a < 0, '出错了,a大于0 啊'
 AssertionError: 出错了,a大于0 啊

2:多个表达式:

a = 1
b = -1
assert a > 0, b < 0
print('正常
输出,表达式返回真了') # 输出:正常输出,表达式返回真了

3:尝试捕获 assert 异常:

import traceback

try:
 assert a < 0
except AssertionError as aeeor: # 明确抛出此异常
 # 抛出 AssertionError 不含任何信息,所以无法通过 aeeor.__str__()获取异常描述
 print('AssertionError', aeeor, aeeor.__str__())

 # 通过 traceback 打印详细异常信息
 print('traceback 打印异常')
 traceback.print_exc()
except: # 不会命中其他异常
 print('assert except')

try:
 raise AssertionError('测试 raise AssertionError')
except AssertionError as aeeor:
 print('raise AssertionError 异常', aeeor.__str__())

输出:

AssertionError
traceback 打印异常
Traceback (most recent call last):
 File "main.py", line 7, in <module>
 assert a < 0
AssertionError
raise AssertionError 异常 测试 raise AssertionError

4:函数调用抛出异常:

# 除法运算
def foo(value, divide):
 assert divide != 0
 return value / divide


print('4除以2 =', foo(4, 2)) # 执行成功
print('4除以0 =', foo(4, 0)) # 抛出异常

输出:

4除以2 = 2.0
Traceback (most recent call last):
 File "main.py", line 8, in <module>
 print('4除以0 =', foo(4, 0)) # 抛出异常
 File "main.py", line 3, in foo
 assert divide != 0
AssertionError

通过上面几个示例,相信大家也深刻理解aseert的用处了

总结: 表达式返回false 时。直接抛出异常终止继续执行。

【相关推荐:python视频教程】

热心网友 时间:2022-04-18 14:31

刚才查了,它应该是nose测试框架中的一个测试用例的书写办法。如果没有文档,就看它的源代码。我刚刚下载了nose。


在1.0版本里找到这样一句话。

def raises(*exceptions):
    """Test must raise one of expected exceptions to pass.
    .....

    If you want to test many assertions about exceptions in a single test,
    you may want to use `assert_raises` instead.
    """
从含义上看,应该是确保一定要发生异常。而且要用在大量使用assert语言产生异常的条件下。


下面一段更说明问题。

def assert_raises(exception, callable, *args, **kw):
try:
callable(*args, **kw)
except exception, e:
return e
else:
if hasattr(exception, '__name__'):
name = exception.__name__
else:
name = ' or '.join([e.__name__ for e in exception])
assert False, '%s() did not raise %s' % (callable.__name__, name)

Usage:
def test_foo():
    e = assert_raises(EnvironmentError, open, '/tmp/notfound')
    assert e.errno == errno.ENOENT

 还比如这样子。

import math

import py.test
py.test.raises(OverflowError, math.log, 0)
py.test.raises(ValueError, math.sqrt, -1)
py.test.raises(ZeroDivisionError, "1 / 0")

import nose.tools
nose.tools.assert_raises(OverflowError, math.log, 0)
nose.tools.assert_raises(ValueError, math.sqrt, -1)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
泰迪必备用品有哪些? 养泰迪狗新手需要准备什么东西 谁知道白色泰迪狗的生活用品需要哪些? 美国什么选举时间 离西双版纳最近的地州必去景点 技嘉945GCM-S2L ( 英特尔 945G )主板配什么显卡好 5年的台式电脑了想更新配置,反应速度有点慢。该如何提高,求大神指教... e2160超频设置 如何将多个excel表格合并成一个如何把多个工作簿合并成一个excel 上海社保最低比例是多少钱 淘宝拍下商品后不付款对账户有影响吗? 银行联名卡的作用 银行有没有联名卡这个种类 有什么可以除烟味 和烟渍的牙膏 那款牙膏除烟渍 求可盐可甜的包包推荐? 为什么2019的新款香奈儿大牌包包一定要买呢? 都说2019的香奈儿大牌包包一定要买,你知道为什么吗? 请问间距,间隔数,植树棵树表示什么意思?间隔数,植树棵树有什么联 抽样间隔跟抽样间距是不是一回事? 辽宁男篮旧将原帅连续爆发,李洪庆后悔放走他吗? 辽宁男篮为什么不解雇总经理李洪庆? 辽篮教练卢伟突然下课,辽宁队失去冠军是因为他吗? 间距与间隔的区别 西蒙斯迟迟未融入辽篮,李洪庆为什么没有换人? 间距跟间隔的区别 八一男篮面临解散多位辽籍球员李洪庆是否会下手? python 关于assert的用法,以下是完整代码。 求助大家请问一下为什么会报错webDriver 的对象没有 assert 蒋兴权愿意回归,辞退郭士强的李洪庆还会带回张庆鹏吗? 李洪庆选出来的14号实力究竟怎么样? QQ账户和Email账户有什么区别 打文章除了用Microsoft Word软件还能用什么软件? 怎么用电脑查询中国工商银行的余额呢? 求助,宝宝严重红屁股 新生儿臀红护理论文 白色桑葚能吃吗? 淘米水能不能和姜水混和在一起洗头 去意大利留学如何选择一个好的机构? 用淘米洗头后 在用姜水清洗头发会不会有更好的效果?还是用不着用姜水清洗了啊? 意大利留学 走计划生大致的流程是怎样的? 想申请意大利留学通过哪家办理? 请问意大利留学一年费用问题 办理意大利留学哪里比较好?英恒意大利留学怎么样? 怎么样申请去意大利艺术留学? 海贼王 和冰雪传奇 哪个更赚钱 去意大利留学的话,意大利入学考试怎么考?考哪些? 传奇打金工作室挣钱吗,他们以什么形式盈利呢? 梦见被疯狗追,最后疯狗掉山摔死 少女时代Hoot歌词 买车险需要什么材料