前言
測試過程中需要造數據,在yaml文件使用變量名占位,在加載數據時填充進去。
displace.py 定義處理變量的方法,使用遞歸遍歷。
# 同級目錄下的文件使用from . 導入
from . import create_data
def analyze_data(data):
"""
遞歸解析json數據
:param data: 數據源
:return:
"""
# 判斷是否是字典
if isinstance(data, dict):
# 遍歷key,value
for k, v in data.items():
# value是字典、列表或者元組,遞歸。
if isinstance(v, (dict, list, tuple)):
analyze_data(v)
else:
# value是字符串,檢查是否是特殊變量,是則替換
if str_dispose(v):
data[k] = variable_substitution(v)
if isinstance(data, (list, tuple)):
for i in range(len(data)):
data[i] = analyze_data(data[i])
return data
else:
if str_dispose(data):
data = variable_substitution(data)
return data
def variable_substitution(s):
"""變量替換從指定的文件中找方法"""
name = str(s).replace("${", "").replace("}", "")
if hasattr(create_data, name):
# 通過反射招到create_data文件中找方法
func = getattr(create_data, name)
return func()
else:
return "not found!"
def str_dispose(_str):
"""判斷字符串是否包含${}字符"""
return True if str(_str).startswith("${") and str(_str).endswith("}") else False
create_data.py 定義方法返回變量需要替換的值
import random
from faker import Faker
"""
在這里寫生成測試數據的方法,yaml文件中用“${變量名}調用”
"""
f = Faker(locale='zh_CN')
# 隨機生成一個姓名
def name(): return f.name()
# 隨機生成電話號碼
def phone(): return f.phone_number()
# 隨機公司名稱
def company(): return f.company()
# 隨機生成一篇文章
def text(): return f.text()
# 隨機身份證號
def ssn(): return f.ssn()
# 隨機段落
def paragraph(): return f.paragraph()
# 隨機一句話
def sentence(): return f.sentence()