python - 如何在 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 循环或其他内容以避免重复断言?
解决方案
推荐阅读
- c++ - Xcode“ld:未找到架构 x86_64 的符号”
- jmeter - 并行执行的 Jmeter 响应时间
- python - 文件OpenCV Python的正确路径的CascadeClassifier错误
- rest - Google Cloud Resource Manager API:如何列出操作?
- python - 熊猫如何从第一次出现开始选择日期框
- python - subMethod(m) 的复杂度为 O(m),下面代码的最坏情况复杂度是多少?
- r - 整齐的数据,列名中有多个变量,每行有多个观察值
- node.js - 使用节点js将数据保存到mongodb后如何返回2个数组
- turtle-graphics - 无论我输入什么参数,速度函数都不会改变海龟的位置
- python - 类型错误:+ 不支持的操作数类型:“浮点”和“时间”