2024年最新接口测试 Pytest断言处理_告警断言_pytest -p no warnings,2024年最新大厂Offer拿到手软啊

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

warn_message() # 加上这句,执行用例会看到抛出的告警


###### 1.3 将告警信息存入一个变量中,通过读取这个变量中的信息进行断言,包括:告警的个数、告警信息参数等。



import warnings
import pytest

def warn_message():
   warnings.warn(“user”, UserWarning)
   warnings.warn(“runtime”, RuntimeWarning)

def test_warn_match():
   with pytest.warns(UserWarning, match=r’.*t.*') as record:
       warn_message()    
   
   assert len(record) == 2
   assert str(record[0].message) == “user”
   assert str(record[1].message) == “runtime”


运行结果:



![](https://img-blog.csdn.net/20180409201243647?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXNvbmd6aXll/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)


  



从运行结果中,可以看到,返回的list中存储了2个warnings信息,即record是一个list,可以计算长度,并通过record[i].message获取告警信息。  
PS:将示例中的`match=r'.*t.*'`更改为`match=r'.*u.*'`即可执行成功。




---


下面不是pytest.warns()的断言介绍了




---




---


#### pytest捕获告警信息


* pytest默认捕获除DeprecationWarning和PendingDeprecationWarning外的所有告警信息,可以在pytest.ini中进行配置,使出现这两类告警时也会抛出告警信息:



pytest.ini[pytest]

filterwarnings =
   once::DeprecationWarning
   once::PendingDeprecationWarning


* 如果出现特定告警需要使用例执行失败,可以采用-W命令:`pytest -q test_show_warnings.py -W error::UserWarning`
* 可以在pytest.ini中设置过滤或者执行失败,在这个过滤条件中,除UserWarning外的告警都会识别为错误进行处理。



pytest.ini[pytest]

filterwarnings =
   error
   ignore::UserWarning


* pytest的标记函数处理告警信息



忽略function中的告警

@pytest.mark.filterwarnings(‘ignore:function’)

将用例中所有的告警都转换为错误,将装饰器作用于测试类,则测试类中的所有用例出现告警都会失败

@pytest.mark.filterwarnings(‘error’)


* 不捕获告警信息,可以在文件中进行配置,或者在命令行传递`-p no:warnings`,那么当用例存在告警信息时,都不会在结果中输出告警信息:



pytest.ini

[pytest]
addopts = -p no:warnings


#### pytest记录告警信息


* 可以采用recwarn fixture记录函数的全部告警信息  
每个告警记录包含以下属性:
* message
* category
* filename
* lineno
* file
* line


每个告警记录具有list的属性,可调用以下方法:


* pop()
* clear()



import warningsdef test_hello(recwarn):
   warnings.warn(“hello”, UserWarning)
   assert len(recwarn) == 1
   w = recwarn.pop(UserWarning)
   assert issubclass(w.category, UserWarning)    
   assert str(w.message) == “hello”
   assert w.filename    assert w.lineno

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

dn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值