Skip to main content
 首页 » 编程设计

python之python assert函数的建议

2025年05月04日9sky-heaven

我在多个脚本中多次使用断言,我想知道是否有人对实现此目的的更好方法有任何建议,而不是我在下面创建的函数。

def assert_validation(expected, actual, type='', message=''): 
    if type == '==': 
        assert expected == actual, 'Expected: %s, Actual: %s, %s' %(expected, actual, message) 
    elif type == '!=': 
        assert expected != actual, 'Expected: %s, Actual: %s, %s' %(expected, actual, message) 
    elif type == '<=': 
        assert expected <= actual, 'Expected: %s, Actual: %s, %s' %(expected, actual, message) 
    elif type == '>=': 
        assert expected >= actual, 'Expected: %s, Actual: %s, %s' %(expected, actual, message) 
 
def assert_str_validation(expected, actual, type='', message=''): 
    if type == '==': 
        assert str(expected) == str(actual), 'Expected: %s, Actual: %s, %s' %(expected, actual, message) 
    elif type == '!=': 
        assert str(expected) != str(actual), 'Expected: %s, Actual: %s, %s' %(expected, actual, message) 
    elif type == '<=': 
        assert str(expected) <= str(actual), 'Expected: %s, Actual: %s, %s' %(expected, actual, message) 
    elif type == '>=': 
        assert str(expected) >= str(actual), 'Expected: %s, Actual: %s, %s' %(expected, actual, message) 

请您参考如下方法:

嗯,这肯定更短......你真的不能只使用 assert expected == actual 或脚本本身中的任何内容吗?

def assert_validation(expected, actual, type='', message='', trans=(lambda x: x)): 
    m = { '==': (lambda e, a: e == a), 
          '!=': (lambda e, a: e != a), 
          '<=': (lambda e, a: e <= a), 
          '>=': (lambda e, a: e >= a), } 
    assert m[type](trans(expected), trans(actual)), 'Expected: %s, Actual: %s, %s' % (expected, actual, message) 
 
def assert_str_validation(expected, actual, type='', message=''): 
    assert_validation(expected, actual, type, message, trans=str)