一、测试数据
1. 随机库random
查看内置random方法,该方法自行学习,不再介绍。
show
print([name for name in dir(random) if callable(getattr(random, name))])
['Random', 'SystemRandom', '_Sequence', '_Set', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_exp', '_floor', '_log', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
2. Faker库
pip install faker
Https://github.com/joke2k/faker
show
from faker import Faker
f = Faker(locale='Zh-CN')
def random_string():
"""
:return:随机生成字符串,20位
"""
return f.pystr()
def random_ssn():
"""
:return:随机生成省份中
"""
return f.ssn()
def random_phone(self) -> int:
"""
:return: 随机生成手机号码
"""
return f.phone_number()
def random_id_card(self) -> int:
"""
:return: 随机生成身份证号码
"""
return f.ssn()
def random_female_name(self) -> str:
"""
:return: 女生姓名
"""
return f.name_male()
def random_male_name(self) -> str:
"""
:return: 男生姓名
"""
return f.name_female()
def random_email() -> str:
"""
:return: 生成邮箱
"""
return f.email()
def random_int():
"""随机生成 0 - 9999 的数字"""
return f.random_int()
3. 应用到项目中
3.1 思路
-
在用例数据中添加标志位,设计这个标志位为
{{特殊的变量名}}
,例如生成手机号码的标志位为
{{ phone_number }}
-
什么字段里有可能有这个标志
-
request_data
-
sql
-
url
- header
- expected
-
-
-
检查用例数据,如果出现了标志则动态生成对应数据并替换
3.2 用例数据修改
def replace_dependent_parameter(self, jst):
"""
替换字符串中的关联参数,并返回转化后的字典格式。
Args:
jst: 包含接口参数的字符串
Returns:转换后的字典或原始字符串
"""
if not jst:
return jst
jst = json.dumps(jst) if isinstance(jst, (dict, list)) else jst
# 替换
while self.PATTERN.search(jst):
key = self.PATTERN.search(jst).group()
# 字符串替换
if key in self.dependence.keys():
jst = jst.replace(key, str(self.get_dependent_value(key)))
logger.my_log(f"key:{key},替换成功:{self.get_dependent_value(key)}")
else:
logger.my_log(f"key:{key},在关联参数表中查询不到,请检查关联参数字段提取及填写是否正常\n")
break
jst = jst.replace("True", "true").replace("False", "false")
if self.pattern.search(jst):
try:
jst = json.loads(jst)
except json.JSONDecodeError as e:
logger.my_log(f"JSONDecodeError:{jst}:{e}")
return jst
标签:return,self,random,接口,jst,测试数据,key,替换,def From: https://www.cnblogs.com/Nephalem-262667641/p/17275874.html