下面是我的代码,它根据字典中可用的密钥替换字符串中的一些字符:
import re
D = {'h':'hhh', 'l':'nnn'}
enpattern = re.compile(r'(.)\1?', re.IGNORECASE)
def convert(str):
result = [x.group() for x in enpattern.finditer(str)]
data = ''.join(map(lambda x:D.get(x.lower(), x.lower()), result))
print data
如何为此代码编写单元测试,以使convert()的参数永远不是整数,并且它只应接受字符串或'$'
之类的特殊字符。
如何编写单元测试,以便我可以检查char
,int
或任何其他可以作为参数传递的数据类型。
答案 0 :(得分:0)
没有特殊工具的单元测试:
print convert("somestring") == "expected_result_for_somestring"
print convert("otherstring") == "expected_result_for_otherstring"
print convert("stringWith$") == "expected_result_for_stringWith$"
或者你可能不需要“单元测试”但是“传递给convert()的参数测试”
def convert(param):
if type(param) == int:
print "wrong argument type: int"
return
if type(param) == str and "$" in param:
print "wrong char in string: $"
return
BTW:不要使用str
作为变量名。
list
和for
编辑原始测试
def convertTest():
datas = (
( "somestring", "expected_result_for_somestring"),
( "otherstring", "expected_result_for_otherstring"),
( "stringWith$", "expected_result_for_stringWith$")
)
for input, output in datas:
print input, "result:", convert(input) == output
编辑:在“波兰Python Coders Group”论坛上将罗马数字转换为阿拉伯数字的3个函数(三个不同作者)的原始测试示例:
查找testowe
(测试数据)和test()
http://pl.python.org/forum/index.php?topic=4399.msg18831#msg18831