本人在python自動化測試編寫指令碼時遇到的一些與python程式設計有關的問題 總結記錄一下【持續更新】
在學校裡學過C語言、C#、Java
沒有系統地學習過Python 但是有一些程式設計基礎 所以就直接上手編寫python指令碼了
因此,在這個過程中,學習了一段時間後,還是出現了一些和python程式設計有關的疑點和問題,現在在這裡總結記錄一下!
1.從.txt檔案中讀取資訊
一些網站資訊(比如url、元素id等等)讀取:
def get_web_info(path): web_info={} #定義一個空的字典 web_file=open(path) #開啟一個路徑為path的txt檔案 如果列印的話 會出現txt檔案裡的所有內容 for line in web_file: #一行一行的遍歷txt檔案中的內容 result=[ele.strip()for ele in line.split('=')] #列表解析以'='符號為分隔,將遍歷的一行的內容放在一個數組裡,每一個result的形式都是[ , ] web_info.update(dict([result])) #將每次的result生成的列表,生成一個新字典,更新一開始定義的空字典web_info return web_info
python 程式設計知識點:
①dict()是創造一個新的字典 可以把列表放進去 但是要在原有的列表名外面加上'[]'符號,否則會報錯
②update()是字典的一個方法,新增字典裡的內容,括號裡放的還是一個字典
2.從excel檔案中讀取資訊(用例大多數都是寫在excel中):
class XlUserinfo(object): def __init__(self,index, path=''): self.xl=xlrd.open_workbook(path) self.sheet=self.xl.sheet_by_index(index) #浮點型轉為int型別字串 def floattostr(self, val): if isinstance(val, float): val = str(int(val)) return val def get_sheet_info(self): listkey = ['uname', 'pwd'] infolist = [] for row in range(1, self.sheet.nrows): info = [ self.floattostr(val) for val in self.sheet.row_values(row)] tmp = zip(listkey, info) infolist.append(dict(tmp)) return infolist
①class類,方法上和Java差不多,Java的類下面會跟上一個和class類名相同的構造方法,而Python中會跟上一個初始方法init,這個方法在呼叫的時候是不需要特別的去宣告的,既然有了class類的物件,那麼這個init方法直接就被呼叫了,同時,python中想要使用一個類,不需要像Java一樣去new,直接'='就可以了
②兩個列表的zip()方法
可以將兩個列表組合一起dict生成一個新的字典,比如程式碼中的listkey=['uname','pwd']和(假設一個result)result=[[email protected],abc123],如果dict(zip(listkey,result))注意 一定要dict()才能生成一個新字典哦!,結果就是{uname:
③列表的append方法:在列表裡面新增新內容,可以把好幾個字典一起放在同一個列表中
④讀取excel用到的:
首先必須import xlrd
Ⅰ data=xlrd.xlrd.open_workbook(path)
Ⅱ sheet=data.sheet_by_index(index)
Ⅲ sheet.row_values(i) 第(i+1)行的所有內容
Ⅳ sheet.col_values(j) 第(j+1)列的所有內容
Ⅴ sheet.nrows 行數 sheet.ncols 列數
Ⅵ sheet.cell(i,j).value 某個單元格的值