簡體   English   中英

Robot Framework:如何讀取csv文件中的隨機行並使用這些值?

[英]Robot Framework: How to read a random row in a csv files and use the values?

我在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中創建一個腳本來獲取它們的值,有人可以幫助我嗎?

這條線錯了:

auserinfo = RandomRowFromCsv(*csv_userinfo[position])

您正在創建一個新的RandomRowFromCsv對象(循環引用), a)您不需要,以及b) class'es構造函數不接受參數(如果a)不適用)。

通過該行,您已經解析了csv文件並將其放在userinfo列表中,您只需將行分配給auserinfo

auserinfo = csv_userinfo[position]

現在auserinfo是一個詞典; 要獲取名稱和密碼,您應該使用aserinfo['username'] (其中“username”是csv列名)。 點符號不起作用 - 它是對象屬性,這不是這里的情況。

並同時返回兩者,將它們作為元組返回 - 將最后兩行更改為:

return aserinfo['username'], aserinfo['password']

最后,你有一個小的邏輯流 - 由於1 in

position = random.randrange(1, lengthofcsv)

,第一行永遠不會被選中 - position永遠不會有值0,這是第一行的索引; 所以最好將randrange參數更改為0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM