Redian新闻
>
为了少挨点骂,我学了这个 Python 关键字...

为了少挨点骂,我学了这个 Python 关键字...

公众号新闻
最近我的项目bug有点多,所以最近我每天都会挨测试人员的骂。

为了少挨点骂,我打算“窥探”下自动化测试人员是怎么测我的代码逻辑的。

于是我悄悄地顺了一份自动化测试的代码。

发现测试代码里有极多的assert语句。

啥是assert语句?

Python语言中,有assert关键字的语句,被称为断言语句。

断言是可用于在开发过程中设置健全性检查的语句。

断言允许开发人员通过检查某些特定条件是否仍然成立来测试代码的正确性。

assert关键字用于检查一个条件是否为真,如果条件为假,则会抛出AssertionError异常。

语法:

assert boolean_expression, message

它通常用于调试和测试阶段,用于验证程序的正确性。例如:

x = 5
assert x > 0"x必须大于0"

上述代码会检查变量x是否大于0,如果条件为假,则会抛出AssertionError异常,并且可以指定一个可选的错误消息。

但用raise同样可以手动抛出异常,为什么测试和调试要用assert关键词?

assert VS raise

在Python中,除了assert之外,的确还有raise关键字可以用于手动抛出异常。

那么,为什么在测试和调试中我们更倾向于使用assert而不是raise呢?

  • 可读性:assert语句更具可读性,一目了然地表达了我们的断言意图。

  • 调试信息:AssertionError异常会包含详细的调试信息,方便快速定位问题。

在实际项目中如何使用assert?

  1. 函数参数检查:在函数开头使用assert确保参数满足特定条件。
def divide(x, y):
    assert y != 0"除数不能为0"
    return x / y
  1. 数据结构不变性检查:在数据结构的操作中使用assert确保不违反不变性条件。
def remove_item(my_list, item):
    assert item in my_list, "要移除的项不在列表中"
    my_list.remove(item)
  1. 测试驱动开发:在编写测试用例时,使用assert验证预期结果。
def test_addition():
    result = add(34)
    assert result == 7"加法运算错误"

pytest的单元测试脚本

基于pytest模块的测试代码

最后

希望大家在项目中能善用assert,让代码更可靠,做好单元测试,少挨些骂。


- EOF -

推荐阅读  点击标题可跳转

1、马斯克硬核迁移服务器

2、中国数学老师在P站教微积分年入百万

3、放弃亚马逊、谷歌!!!

4、监控员工微信聊天记录,方法还这么多!


关注「程序员的那些事」加星标,不错过圈内事

点赞和在看就是最大的支持❤️

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
链家,终于可以少挨点骂了no-GIL Python,启动!PyTorch2.1支持昇腾NPU!华为成为中国首个PyTorch基金会Premier会员Python重量级证书!UMich出品:亚马逊、谷歌认可,留学生12小时拿下留学生零基础入门!MIT内部Python课程,12小时学完!再见Python,你好SQL文末送书 | 经典计算机科学教材!用Python描述数据结构与算法的开山之作我不是虎妈—与女儿一起长大的另类哈佛妈妈Python 3.12 正式发布:性能提升、no-GIL将在 3.13 提供自学4天!我在线上白嫖到了Google高分Python课程快手菜nǚ hóng?nǚ gōng十年后更新,关键字:4个老人,双独,养老 ,关系问题,费用问题马斯克版ChatGPT爆火来袭!不用Python,11人爆肝两个月微软:VSCode 决定放弃 Python 3.7退休警犬放空,听到关键字"职业病发作"秒回神瞪大眼局长开车轧死4岁小孩没留案底,他说:“我花钱买了他的命。”数据分析|全面掌握Python, SQL等数据分析语言、工具和拓展包,高效斩获心仪offer!开源版 GPT-4 代码解释器,可安装任意 Python 库,本地终端运行微软,终于对Python下手了!'眼見為實”和'耳听为虛”都是人之常情穿多显胖、穿少挨冻的初秋,到底穿啥才能又瘦又美?大隐隐于市!越南一家人在San Jose开的小店全是越南客人——Phở Cường 2嫌Python慢,这个AI分析器帮你检测、建议优化,获OSDI最佳论文刷爆外网!密歇根大学出品12小时速成Python课!零基础也能学Python Web框架的三强之争:Flask、Django和FastAPI通义千问2.0来了!实测编程打败8成Python用户,阿里云大模型「全家桶」炸场Mojo登陆Mac,比Python快90,000倍今日全职|摩根大通数据科学分析师火热招聘中,要求熟练使用Python!刷爆外网!美国密歇根大学出品12小时速成Python课!零基础也能学大神是如何用python对远程服务器进行命令或文件操作的?VLOOKUP这次真的要退休了?Excel居然和Python合体,看完我就跪了!一篇文章带你了解Python常用自动化测试框架——PytestPython实战 | 使用 Python 和 TensorFlow 构建卷积神经网络(CNN)进行人脸识别美国西部 2023火爆北美的少儿Python编程课免费领!藤校师资培养科技竞赛能娃!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。