首页 > 解决方案 > 如何在 try 断言块(或将断言块插入循环)中插入 for 循环以避免重复断言?

问题描述

我想避免为每种情况以及更多情况重复一次断言语句:

na000 ='567890123456789012345678901234567890123456789012345678901234567890'
na003 = '45678901234567890123456789012345678901234567890123456789012345678'
na099 = '012345678901234567890123456789012345678901234567890123456789012345'
na098 = '67890123456789012345678901234567890XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
na050 = '12XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
na002 = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

特别是我想避免重复这样的断言:

try:
    assert levenshteinize(na000, nai03, 1)[0] == 4, 'testing 3 substitut and 1 insert error' 
    assert levenshteinize(na000, no099, 1)[0] == 99, 'testing 99 omisions error'
    assert levenshteinize(na000, no098, sil)[0] == 98, 'testing 98 omisions error'
    assert levenshteinize(na000, no050, sil)[0] == 50, 'testing 50 omisions error'
    assert levenshteinize(na000, no002, sil)[0] == 2, 'testing 2 omisions error'
except AssertionError as e
...

我已将字符串插入字典中,键为 var 名称(数字)。但重要的是,为了避免断言,我创建了一个包含try... assert... except在 a 中的函数for-loop。我尝试了不同的版本,类似于下面的版本,但它们似乎都没有问题(在运行之前检测到无效的语法错误)。编辑:我只是错过了一个简单的def. 现在正在考虑是否删除问题...

def test_lev(nerrors = defaultlist, silent = 0, levreturn: int = 0):

try:
    for num in nerrors: 
        assert nnocrate.levenshteinize(na['000'], na[numto3st(num)], silent)[levreturn] == num, f'testing {num} error'
except AssertionError as e:
    print(f'levenshtein() has failed with na when {e.args[0]}\n')
else:
    print('\nAll na assert OK')

我怎样才能做到这一点?如何插入 for 循环或其他内容以避免重复断言?

标签: pythonfor-looptestingrefactoringassert

解决方案


推荐阅读