CHANGES IN 2019-8-25
- 【EDIT】自动生成模糊用例剔除了对PICT的依赖,用python的
allpairspy
模块实现
CHANGES IN 2019-8-11
- 【ADD】 UI自动化新增DashBoard
- 【ADD】 UI自动化用例步骤管理可以关联公共用例
- 【ADD】 UI自动化新增公共用例模块
Large diffs are not rendered by default.
allpairspy
模块实现hope ={"a": "b"}
fact=
{"a": "b", "c": "d"}' # 直接找值
{"a": "b", "c": "d", "data":{"a": "b1"}}' # 找data里面的值
[{"a":"b"},{"c":"d"}]' # 找list里dict的值
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
import uuid | ||
from allpairspy import AllPairs | ||
# pip install allpairspy | ||
|
||
from collections import OrderedDict | ||
|
||
|
||
class BaseFuzzParams(object): | ||
""" 设置接口的逆向参数 | ||
自动生成模糊接口参数第一步,提前准备逆向场景 | ||
Args: | ||
d: dict类型,正向接口参数 | ||
Returns: | ||
dict | ||
Raises: | ||
无 | ||
""" | ||
|
||
def __get_data(self, d): | ||
data = {} | ||
for i in d: | ||
data[i] = [] | ||
# data[i].append({"info": "正确的值", "code": 1, "value": d[i], "key": i}) | ||
data[i].append({"info": "为空", "code": -1, "value": "", "key": i}) | ||
data[i].append({"info": "错误的值", "code": -2, "value": self.__param_format(type(d[i])), "key": i}) | ||
data[i].append({"info": "删除", "code": -3, "key": i}) | ||
return data | ||
|
||
''' | ||
生成逆向场景参数 | ||
''' | ||
|
||
def __param_format(self, key): | ||
if key == str: | ||
return str(uuid.uuid1()) | ||
elif key == int: | ||
return 963852 # 也可以使用随机整数的方式 | ||
elif key == list: | ||
return [str(uuid.uuid1())] | ||
elif key == dict: | ||
return {} | ||
else: | ||
return "null" | ||
|
||
''' | ||
得到逆向场景参数后,用AllPairs生成全对偶参数 | ||
''' | ||
|
||
def __set_fuzz(self, d): | ||
data = [] | ||
for i, par in enumerate(AllPairs(OrderedDict(d))): | ||
app = [] | ||
for j in par: | ||
app.append(j) | ||
data.append(app) | ||
|
||
dd = [] | ||
for i in data: | ||
d = [] | ||
for j in range(len(i)): | ||
d.append(i[j]) | ||
dd.append(d) | ||
|
||
d2 = [] | ||
for i in dd: | ||
d1 = [] | ||
for j in i: | ||
app = {} | ||
if j.get("code", -9) == -1: | ||
app[j["key"]] = "" | ||
elif j.get("code", -9) == -3: | ||
pass | ||
else: | ||
app[j["key"]] = j["value"] | ||
app["info"] = j["key"] + j["info"] | ||
d1.append(app) | ||
d2.append(d1) | ||
return d2 | ||
''' | ||
对外的函数,处理生成的对偶场景接口参数 | ||
Returns: | ||
[{},{}] | ||
''' | ||
def param_fi(self, d): | ||
g_data = self.__get_data(d) | ||
s_fuzz = self.__set_fuzz(g_data) | ||
data = [] | ||
for i in s_fuzz: | ||
for j in range(len(i)): | ||
_info = "" | ||
for k in range(len(i)): | ||
_info = _info + "," + i[k]["info"] | ||
i[0].update(i[k]) | ||
i[0]["info"] = _info | ||
data.append(i[0]) | ||
break | ||
return data |