问题:
在做接口自动化测试的时候,请求报文是json串,但是根据项目规则必须转换成字符串,然后在开头拼接“data=”
接口中很多入参值需要进行参数化。
解决方案:
1、Python并没有对在字符串中简单替换变量值提供直接的支持。 但是通过使用字符串的 format() 方法来解决这个问题。比如:
>>> s = 'hello, this is a {param}!' >>> s.format(param='dog') 'hello, this is a dog!' >>>
2、如果要被替换的变量能在变量域中找到, 那么你可以结合使用 format_map() 和 vars() 。就像下面这样:
>>> param='cat' >>> s.format_map(vars()) 'hello, this is a cat!' >>>
3、使用%()包裹变量
>>> name = 'Guido' >>> n = 37 >>> '%(name) has %(n) messages.' % vars() 'Guido has 37 messages.' >>>
4、但是使用上述两种方式在实际参数化json请求报文的时候,仍然是失败的,可能是因为json串里面本身包含了{}
尝试使用$var成功
>>> import string >>> s = string.Template('$name has $n messages.') >>> s.substitute(vars()) 'Guido has 37 messages.' >>>