网易首页 > 网易号 > 正文 申请入驻

Pytest丨如何使用全功能的Python测试框架?小白必看!

0
分享至

我们在写自动化的过程中,用例的断言也是至关重要的,断言可以帮助我们判断用例测试点是否成功和失败。当然在我们这么强大的pytest框架中,断言也是比较强大的。为什么?继续往下看。

  pytest断言

  前面说到pytest的断言比较强大,它直接可以使用python自带的断言内容,当然不止而已,pytest还有一个重要的功能是可以重写assert关键字,pytest会截断对python中自带的assert的调用然后替换成自己定位的assert,从而可以获取更多的错误信息,让我们知道具体哪里出现了问题。

编写一个加法进行通过断言验证。

 import pytest

  class Test_01:

   def add(self,x,y):

   c = x + y

   return c

   def test_001(self):

   c = self.add(1,2)

   assert c == 4

  if __name__ == '__main__':

   pytest.main(['-s'

  看到上面的代码大家都知道是会失败的, 那么我们一起看下pytest断言会给我们增加哪些新的报错信息。

  从上图的结果中可以看出带“>”的是python自带的错误解释,而带E的则是pytest进行添加的,这样就能很清楚的看到错误信息,比如这个3==4结果是错误的。

  增加断言详细信息

在编写用例的时候,断言的时候想要获取一些更加有用的信息,比如参数化的时候,需要知道哪个参数进行传入的,如果出错了可以帮助我们进行调试,那么这一点pytest中的assert也可以帮助我们进行增加。

import pytest

  class Test_01:

   def add(self,x,y):

   c = x + y

   return c

   def test_001(self):

   a = 1

   b = 2

   assert self.add(a,b) == 4 , '当前传入的a值:%s,传入的b值:%s' %(a,b)

  if __name__ == '__main__':

   pytest.main(['-s

  很清楚的看到了python自带的assert和pytest增加的对比,python自带的没有把值传入,pytest帮助我们把值传入进去,更加清楚的帮助查看错误信息。

  异常断言

  pytest断言方法内容应该没有unittests多,但是比unittest更加方便,更加灵活。这里安静在举一个例子。比如我们在执行一条错误的用例的时候,已经知道错误类型,这个时候我们也可以通过判断这个错误类型,如果错误类型和预期一致,那么就直接通过用例,反之失败。

安静先写一个错误的函数,然后找到他的错误类型,下面的函数错误类型为“AssertionError”。

def cake():

   a = 'anjing'

   b = 'test_anjing'

   assert a == b

  cake()

  ------------执行结果--------------

   File "E:/auto_test/test_01·py", line 5, in

   cake()

   File "E:/auto_test/test_01·py", line 4, in cake

   assert a == b

  AssertionError

这里可以使用pytest.raises(错误类型)进行对比断言。

  import pytest

  class Test_01:

   def cake(self):

   a = 'anjing'

   b = 'test_anjing'

   assert a == b

   def test_001(self):

   print('Test_01下的用例001')

   with pytest.raises(AssertionError):

   self.cake()

  if __name__ == '__main__':

   pytest.main(['-v

  这个从表面上运行结果肯定是失败的,因为a不等于b,但是加入pytest的断言运行后就成功了。

  上文中的异常断言,可以进行实例化,实例化过后存在三个可以用的方法,分别是.type,.value,.traceback安静简单的进行举例说明。

  .type

我们这里也可以通过pytest.raises进行断言,我们可以根据返回的tpye进行对比,查看我们预期的与实际的是否一致。

  import pytest

  class Test_01:

   def cake(self):

   a = 'anjing'

   b = 'test_anjing'

   assert a == b

   def test_001(self):

   print('Test_01下的用例001')

   with pytest.raises(AssertionError) as excinfo:

   self.cake()

   print('错误的类型是:%s' %excinfo·type)

   assert excinfo.type == AssertionError

  if __name__ == '__main__':

   pytest.main(['-s

  .value

如果还不知道具体的错误出现在哪里,我们也可以通过value进行查看具体的错误类型。

  import pytest

  class Test_01:

   def cake(self):

   a = 'anjing'

   b = 'test_anjing'

   assert a == b

   def test_001(self):

   print('Test_01下的用例001')

   with pytest.raises(ZeroDivisionError) as excinfo:

   self.cake()

   print('错误的类型是:%s' %excinfo·type)

   print('错误的值:%s'%excinfo·value)

   assert excinfo.type == ZeroDivisionError

  if __name__ == '__main__':

   pytest.main(['-s

  可以看出具体错误的值是assert中的两个字符串不相等导致的。

  .traceback

  这里这个方法表示可以把代码中哪行出现了错误进行打印出来,此方法必须在str下进行打印。

  pytest常用断言

  前面也介绍了pytest的断言可以复用python的断言,安静简单的列举几个python的断言:

  1、判断是否为真:assert xx

  2、判断不为真:assert not xx

  3、判断a是否包含b:assert a in b

  4、判断a不包含b:assert a not in b

  5、判断两值相等:assert b == a

  6、判断两值不相等:assert a != b

安静对常用断言简单的举几个例子。

 import pytest

  class Test:

   def is_true(self):

   '''返回True'''

   return True

   def test_01(self):

   '''判断是否为真'''

   assert self.is_true()

   def is_false(self):

   '''返回False'''

   return False

   def test_02(self):

   '''判断不为真'''

   assert not self.is_false()

   def test_03(self):

   '''判断是否相等'''

   a = 'test_anjing'

   b = 'test_anjing'

   assert a == b

   def test_04(self):

   '''判断两值不相等'''

   a = 'test_anjing'

   b = 'anjing'

   assert a != b

   def test_05(self):

   '''判断a包含b'''

   a = 'test_anjing'

   b = 'anjing'

   assert b in a

   def test_06(self):

   '''判断a不包含b'''

   a = 'anjing'

   b = 'test'

   assert b not in a

  if __name__ == '__main__':

   pytest.mai

【重点来了】!!请不要忘记时刻学习着~~这点我相信大家应该都能理解,所以不用写什么:除非你是五年、十年工作经验的测试人员,仅此一点“不学习就会落后”!

  现在我邀请你进入我们的软件测试学习交流群,备注“入群”,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。

  参与方式:https://mp.weixin.qq.com/s/TejfWmGJpjXClaOB3CUPKg

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
莫言:你细心观察一下你的身边人,凡是动不动就生气的人,没有一个是智者,生活多半过得一团糟糕

莫言:你细心观察一下你的身边人,凡是动不动就生气的人,没有一个是智者,生活多半过得一团糟糕

每日一首古诗词
2026-06-18 06:32:18
四川泸州"花坛白骨案"一审将开庭 凶手逃亡28年

四川泸州"花坛白骨案"一审将开庭 凶手逃亡28年

看看新闻Knews
2026-07-09 22:47:40
为什么越来越多人从别墅搬回高层?过来人:别墅存在“4大硬伤”

为什么越来越多人从别墅搬回高层?过来人:别墅存在“4大硬伤”

補懂事的孩紙
2026-07-07 01:18:59
美国笑不出来了:中国正同时建造两艘航母,第四艘并不是核动力?

美国笑不出来了:中国正同时建造两艘航母,第四艘并不是核动力?

优趣纪史记
2026-07-09 21:12:12
俞敏洪也没想到,董宇辉会因广西洪灾后的一个举动,实现口碑暴涨

俞敏洪也没想到,董宇辉会因广西洪灾后的一个举动,实现口碑暴涨

观察者海风
2026-07-08 18:01:45
“达赖”和“班禅”到底哪个地位更高,谁才是真正的掌权者?

“达赖”和“班禅”到底哪个地位更高,谁才是真正的掌权者?

南书房
2026-07-01 19:20:06
美股芯片股普涨

美股芯片股普涨

每日经济新闻
2026-07-09 21:50:06
传iPhone 18 Pro Max机身将更厚重 或因其配备超大容量电池

传iPhone 18 Pro Max机身将更厚重 或因其配备超大容量电池

cnBeta.COM
2026-07-09 22:12:05
乌奈:我不认为自己会参加下届世界杯;我们的目标就是夺冠

乌奈:我不认为自己会参加下届世界杯;我们的目标就是夺冠

懂球帝
2026-07-09 06:25:12
假如日本当年没炸珍珠港,而是全力死磕中国,结局可能恰恰相反

假如日本当年没炸珍珠港,而是全力死磕中国,结局可能恰恰相反

锅锅爱历史
2026-05-30 16:18:33
上海明起受台风“巴威”外围影响,多阵雨,风力增大

上海明起受台风“巴威”外围影响,多阵雨,风力增大

上观新闻
2026-07-09 13:17:54
越南人调侃:从上学第一天起,“中国”就占据了我们历史课的80%

越南人调侃:从上学第一天起,“中国”就占据了我们历史课的80%

凡人侃史
2026-07-09 16:46:59
多名艺人发声讨债,点名某综艺导演拖欠录制报酬

多名艺人发声讨债,点名某综艺导演拖欠录制报酬

韩小娱
2026-07-09 15:53:14
孙葆洁:萨拉赫被抢断是双方自然接触,埃及犯规是因为先踩脚

孙葆洁:萨拉赫被抢断是双方自然接触,埃及犯规是因为先踩脚

懂球帝
2026-07-09 16:49:21
国务院840号令实施,八月全国退役军人统一享受48条同等优待

国务院840号令实施,八月全国退役军人统一享受48条同等优待

混沌录
2026-07-08 21:23:35
导游带外籍游客插队,女子劝阻反遭辱骂威胁,正脸曝光,网友怒批

导游带外籍游客插队,女子劝阻反遭辱骂威胁,正脸曝光,网友怒批

许三岁
2026-07-08 07:48:42
特朗普当面问泽连斯基:“你愿意去莫斯科吗”

特朗普当面问泽连斯基:“你愿意去莫斯科吗”

环球网资讯
2026-07-09 15:34:31
长沙市体育局通报“我局工作人员占用他人车位引发纠纷”:正会同公安、属地街道等单位对相关情况开展全面调查

长沙市体育局通报“我局工作人员占用他人车位引发纠纷”:正会同公安、属地街道等单位对相关情况开展全面调查

环球网资讯
2026-07-09 18:45:10
中国男篮23人新名单出炉!两位00后后卫成惊喜,郭士强太有魄力了

中国男篮23人新名单出炉!两位00后后卫成惊喜,郭士强太有魄力了

萌兰聊个球
2026-07-09 20:00:54
“巴威”登陆强度大、影响范围广、致灾性强 多部门会商防御工作

“巴威”登陆强度大、影响范围广、致灾性强 多部门会商防御工作

新京报
2026-07-09 11:46:10
2026-07-09 23:27:00
51Testing软件测试网 incentive-icons
51Testing软件测试网
中国软件测试人的精神家园
1605文章数 13279关注度
往期回顾 全部

科技要闻

字节杀回来了!深度实测Seedream 5.0 Pro

头条要闻

福建鞋厂火灾有人悬吊在楼顶数秒坠下 目击者:很揪心

头条要闻

福建鞋厂火灾有人悬吊在楼顶数秒坠下 目击者:很揪心

体育要闻

王楚谈埃及判罚争议:足球没有绝对公平

娱乐要闻

陈翔发文“苍天饶过谁”登热搜,旧事再引关注

财经要闻

中国房地产十年

汽车要闻

悦己更悦人 阿维塔07L加长了更加上了豪华

态度原创

教育
手机
时尚
家居
房产

教育要闻

【预告】7月10日|南方教研大讲堂第192场——数智赋能英语跨学科主题学习 促进学生核心素养整体发展

手机要闻

大我HiBreak Dual 2规格公布:80FPS帧率、提供12/16GB RAM

裙子专场|| 今年夏天的“好身材”,就靠它了

家居要闻

2026建博会(广州) 公装联探展交流活动

房产要闻

猛踩油门!绿地,又拿下海南一个大城更!

无障碍浏览 进入关怀版