Python 求教:httprunner 的 debugtalk.py 中返回多变量的使用方式

IAmTester · 2022年06月16日 · 最后由 debugtalk 回复于 2022年06月17日 · 5110 次阅读

debugtalk.py 有函数:
def get_rand_id(filename):
'''获取到随机的同一行的 id 和 accid'''
import pandas as pd
data = pd.read_csv(filename)
col_id = data['id']
col_uid = data['uid']
col_imid = data['im_id']
num = random.randint(0, len(data) - 1)
id = str(col_id[num])
uid = str(col_uid[num])
imid = str(col_imid[num])
json = {"roleid": id, 'uid': uid, 'imid': imid}
return json
如何在 case 中调用这个函数,并可以使用 json 下的三个 key-value,只能获取一次使用 3 个 key-value,因为这 3 个 id 是有对应关系的,每次随机的话前一次和后一次的 id 是不成对的
求大佬们给个 case 里的使用例子

共收到 9 条回复 时间 点赞
IAmTester 回复

那就在定义一个函数,把上一个函数返回的 json 当作参数
def extract_dict_value(dict,key):
return dict[key]
这样你在 variable 里面就可以
a: ${get_rand_id(filename)}
v1: ${extract_dict_value(a,'key_1')}
v2: ${extract_dict_value(a,'key_2')}

没太懂是啥回事

config:
  rand_id: {$get_rand_id(filename)}

后面的 teststeps 里面获取的是不是就一致了

我有个想法就是在加一个参数 key,函数里面在判断 key,然后 return 对应的 value😂 😂

小鹏友 回复

就是在 testcase 里想同时使用 debugtalk.py 函数的返回值的 id、uid、imid,要如何使用

路了个飞 回复

后面 step 里面要如何提取出来呢

你说的方法是可以,但是每次都会随机获取(random.randint),就无法保证前一次和后一次的是相同的

在当前自定义函数只支持单返回值的情况下,的确是只能使用这种方式。

后面我们再看下支持多返回值的情况。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册