如何创建接收函数作为参数的可复用Faker测试数据生成函数
问题原因
- 调用
generate_data(Faker().credit_card_number())时,代码会先执行credit_card_number()得到固定的信用卡号字符串,再把这个字符串传入函数,列表推导式仅重复引用了同一个固定值,因此返回结果完全重复。
修复实现
步骤1:调整函数逻辑
将Faker实例初始化提出避免重复创建,函数内部循环时再执行传入的方法:
from faker import Faker fake = Faker() def generate_data(faker_method, count=5): return [faker_method() for _ in range(count)]
步骤2:正确调用函数
传入方法时不要加括号执行,只传递方法本身即可:
# 生成5个随机信用卡号 generate_data(fake.credit_card_number) # 可自定义生成数量,比如生成10个随机姓名 generate_data(fake.name, count=10)
扩展:支持带参数的Faker方法
如果需要调用带参数的Faker方法,用lambda表达式包装即可:
# 仅生成VISA类型的信用卡号 generate_data(lambda: fake.credit_card_number(card_type='visa'))
内容的提问来源于stack exchange,提问作者The Singularity
相关产品推荐
相关产品推荐

