Robot Framework:如何读取csv文件中的随机行并使用这些值?

时间:2016-11-21 11:56:55

标签: python csv robotframework

我在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中制作一个脚本来获取它们的值,有人可以帮助我吗?

1 个答案:

答案 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