pytest 如何测试函数中抛出的异常

一般Python中异常可以用 raise 来抛出,此时单测中想要测试错误用例是否触发异常了,可以用pytest中的 with pytest.raises(xxx) 如下:

import pytest
import unittest


class Info(object):
    """info class"""

    def __init__(self, name):
        """
        初始化
        Args:
            name (str): 用户名称
        """
        if name == "":
            raise Exception("name is empty")
        self.name = name


class TestInfo(unittest.TestCase):
	"""
    Testcase for Info
    """
    def test_init(self):
    	some_value = ""
        # 判断是否raise了一个Exception
        with pytest.raises(Exception):
            one = Info("")
        expected = ""
        assert some_value == expected

  

或者用mock的方法,在try部分的函数中,模拟一个异常(用side_effect)

res_get = 'want_to_get'

mock_cloud_resource_get = mock.patch('xxx.models.test', return_value=res_get, side_effect=Exception("test"))
会触发Exception("test")
 
 
 

 

 

posted @ 2023-12-12 17:15  CodeRabbit_joion  阅读(218)  评论(0)    收藏  举报