我在python中创建了这段代码:
import csv
import random
class RandomRowFromCsv (object):
ROBOT_LIBRARY_SCOPE = 'Global'
def __init__(self):
print 'Read Random Cell Value in CSV File'
def read_random_row(self,filename):
csv_userinfo=[]
auserinfo={}
with open(filename,'rb') as csvfile:
reader=csv.DictReader(csvfile)
csv_userinfo=list(reader)
lengthofcsv=len(csv_userinfo)
position=random.randrange(1,lengthofcsv)
auserinfo=RandomRowFromCsv(*csv_userinfo[position])
return auserinfo.username
return auserinfo.password
但我无法获取值并在Robot Framework中制作一个脚本来获取它们的值,有人可以帮助我吗?
答案 0 :(得分:0)
这一行错了:
auserinfo = RandomRowFromCsv(*csv_userinfo[position])
您正在创建一个新的RandomRowFromCsv
对象(循环引用), a)您不需要, b)类& #39; es构造函数不接受参数(如果 a)不适用。)
通过该行,您已经解析了csv文件并将其放在userinfo
列表中,您只需要将行分配给auserinfo
:
auserinfo = csv_userinfo[position]
现在auserinfo
是一个词典;得到的名字和密码,您应该使用aserinfo['username']
(其中"用户名"是csv列名称)。点符号不起作用 - 它是对象属性,这不是这里的情况。
要同时返回两者,将它们作为元组返回 - 将最后两行更改为:
return aserinfo['username'], aserinfo['password']
最后,由于<{p}}中的1
,您的逻辑流程很小
position = random.randrange(1, lengthofcsv)
,永远不会选择第一行 - position
永远不会有值0,这是第1行的索引;因此,最好将randrange
参数更改为0
。