很多测试小伙伴在编写接口测试用例的时候,经常遇到有些传参的定义大致如下所示:
我们在针对这种参数的基本接口用例中,很可能定义一些写死的参数,比如:
{
"departName" : "一二三四五六七八九零一二三四五六七八九零一二三四五六七八九零一五",
"parentDepartId" : "1"
}
明显这种测试不能够覆盖参数范围,容易出现一些组合问题
现在一般的接口测试框架或者测试平台,基本都具备用例前置操作的功能,于是我们可以通过python脚本快速的实现动态随机能力,这样结合测试场景编排的多次随机测试,基本能够将用例上升一个档次。
在Python中生成一个包含数字、字母和下划线的随机字符串,长度在1到32位之间,可以使用random
模块和string
模块来实现。以下是一种实现方式:
import random
import string
def generate_random_string():
characters = string.ascii_letters + string.digits + '_' # 包含大小写字母、数字和下划线的字符集合
length = random.randint(1, 32) # 随机生成长度在1到32之间的数字
return ''.join(random.choice(characters) for _ in range(length)) # 从字符集合中选择指定长度的字符并拼接成字符串
# 示例用法
random_string = generate_random_string()
print(random_string)
这个示例中,generate_random_string()
函数使用random.choice()
函数从包含大小写字母、数字和下划线的字符集合中随机选择字符。然后使用列表推导式和''.join()
方法将随机选择的字符拼接成字符串。
运行示例代码将生成类似下面的输出:
91QH6w2e
每次运行都会生成一个不同的随机字符串,其长度在1到32之间,并且包含数字、字母和下划线。
纯中文示例:
要生成32位长度的随机中文字符串,可以使用random.choice()
函数从预定义的汉字列表中选择字符并拼接成字符串。以下是修改后的代码示例:
import random
def generate_random_chinese_string():
characters = ['我', '是', '一', '个', '随', '机', '中', '文', '字', '符'] # 预定义的汉字列表
length = 32 # 指定生成的字符串长度为32
return ''.join(random.choice(characters) for _ in range(length)) # 从汉字列表中选择指定长度的字符并拼接成字符串
# 示例用法
random_chinese_string = generate_random_chinese_string()
print(random_chinese_string)
在这个示例中,我们定义了一个包含预定义汉字的列表characters
,然后使用random.choice()
函数从中选择32个字符,并将它们拼接成一个字符串。
运行示例代码将输出类似以下结果的随机中文字符串:
中文我文字是字一文文我中是字一我一字我中中文文
每次运行结果都会不同,因为每次都是随机选择汉字来生成字符串。
我们也能不通过预定义汉字列表,达到随机汉字的效果:
使用Unicode编码范围内的汉字范围来生成随机汉字。在Unicode编码中,汉字的范围是从U+4E00到U+9FFF。你可以通过生成随机的Unicode码点,然后将其转换为对应的汉字。
下面是修改后的代码示例:
import random
def generate_random_chinese_string():
start = 0x4E00 # 汉字起始的Unicode码点
end = 0x9FFF # 汉字结束的Unicode码点
length = 32 # 指定生成的字符串长度为32
return ''.join(chr(random.randint(start, end)) for _ in range(length)) # 生成随机汉字并拼接成字符串
# 示例用法
random_chinese_string = generate_random_chinese_string()
print(random_chinese_string)
在这个示例中,我们使用了random.randint()
函数来生成一个指定范围内的随机Unicode码点,然后使用chr()
函数将其转换为对应的字符,并将这些随机生成的汉字拼接成一个字符串。
运行示例代码将输出类似以下结果的随机汉字字符串:
潡渹嫨𨭦綳这書浧遺亇運營弔栊脦寵梱譁菟遠
每次运行结果都会不同,因为每次都是随机生成不同的汉字。请注意,由于随机生成,并且并非是预定义的汉字,可能会存在一些生僻字或无法正确显示的字形。
当然,有些时候,利用的是linux环境中自带的python基础环境,于是需要使用2.X的python版本实现:
在Python 2.7中,Unicode编码与Python 3.x略有不同。要在Python 2.7中生成随机汉字字符串,我们可以使用unichr()
函数替代chr()
函数。以下是在Python 2.7中实现generate_random_chinese_string()
函数的代码示例:
# -*- coding: utf-8 -*-
import random
def generate_random_chinese_string():
start = 0x4E00 # 汉字起始的Unicode码点
end = 0x9FFF # 汉字结束的Unicode码点
length = 32 # 指定生成的字符串长度为32
return u''.join(unichr(random.randint(start, end)) for _ in range(length)) # 生成随机汉字并拼接成字符串
# 示例用法
random_chinese_string = generate_random_chinese_string()
print(random_chinese_string)
请注意,在Python 2.7中,我们需要在脚本的开头添加# -*- coding: utf-8 -*-
,以确保正确处理Unicode字符。
运行示例代码将输出类似以下结果的随机汉字字符串:
輚婲枛踧倵鶫溊鰊斅栩貓研蕆溌扦艢鎣楛鯇滋弎縩罘哦嬜徐渖
每次运行结果都会不同,因为每次都是随机生成不同的汉字。在Python 2.7中,我们使用unichr()
函数将Unicode码点转换为对应的字符,并将这些随机生成的汉字拼接成一个字符串。
集成到测试平台的效果: