python - 这段pytest的with语句,是让我回避问题、还是让我解决问题?

查看:137
本文介绍了python - 这段pytest的with语句,是让我回避问题、还是让我解决问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我负责编写一个比较复杂的函数func(),基本上func()对一个长度为3的list即weights做一些操作。我看了一下用来测试的代码:

def test_weights_len(): 
     weights = [1, 2] 
     with pytest.raises(ValueError): 
         func(weights) 

显然用来测试的weights长度只有2,理想状态下它的长度应该有3。

因为pytest目前装不上去(如果谁装过pytest麻烦和我说一下),我不知道这段用来测试的代码是什么意思。是需要我自动把weights长度填充为3、解决这个问题?还是需要我的func()即使weights长度只有2也能运行、回避掉这个问题

我查了一下with的用法:简单的说,当执行with-body出现异常时,先会通过__exit__处理异常。如果__exit__返回True那么忽略异常。如果__exit__返回False,那么向上层抛异常。所以到底是让我解决长度问题、还是忽略长度问题继续运行func()呢?

谢谢!

解决方案

它是让你抛出问题,既不是解决长度问题也不是忽略长度问题。
你的代码大概下面这个样子:

def func(wigths):
    if len(wigths) < 3:
        raise ValueError
    # something to do

这篇关于python - 这段pytest的with语句,是让我回避问题、还是让我解决问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆