一、前言
一如既往,開始前先嘮叨幾句,這兩年有點滿足於現狀了,最近出去找虐了,發現自己的技術有點渣,可以用幾個不夠來概括:不夠紮實,不夠深入,不夠系統化。好了,囉嗦完了,學習的熱情又上來了,計劃用一個月的時間把同事遺留給我的書看完,哈哈。
二、如何學好自動化測試
1、程式語言
我選用Python哈
2、Selenium/appium API
Selenium(WebDriver)和appium API提供了操作web/app的類和方法,我們用這些方法就可以操作web頁面上的元素或APP上面的控制元件
3、單元測試框架
單元測試框架是用例定義測試用例、組織和執行測試用例的,是編寫自動化測試用例的基礎。
三、Python基礎
1、列印和註釋
Python不區分單引號和雙引號,都可以用來表示一個字串,註釋的話,# 單行註釋 ''' 多行註釋
Python提供了print()方法來列印資訊,以下是例子說明
# 定義name和age變數 name = "tom" age = 18 # 用連線符(+)進行拼接,因為age是整型,要通過str()方法將整型轉換成字串 print ("名字是:"+name+",年齡是:"+str(age)) # 用格式符(%s %d)進行替換,其中%s用於指定字串,%d(data)用於指定數字,如果不確定資料型別 可以用%r print("名字是:%s, 年齡是:%d" %(name,age)) # 用格式化函式format進行格式化,這是比較常用的 print("名字是:{},年齡是:{}".format(name,age))
2、分支與迴圈
2.1 if 語句
a =2 b = 3 if a>b: print("a大於b") else: print("a小於b")
2.2 for 語句
# 迴圈遍歷列表 zoons = ["monkey","horse","bear"] for zoon in zoons: print(zoon) # 列印1-10之間的奇數, 格式:range(start,end[,step]) ,在range()函式中,start表示起始位置,ens表示結束位置,step表示每次迴圈的步長 # 執行的結果為1 3 5 7 9 for i in range(1,10,2): print(i)
3、列表、元組與字典
3.1 列表
列表即list,也稱陣列,用[]表示,例子說明如下
# 定義列表 lists = [1,2,3,4,5] # 列印列表 print(lists) # 列印列表中的第1個元素和最後一個元素,結果為1 5 print(lists[0],lists[-1]) # 修改列表中的第5個元素為s , 結果為[1, 2, 3, 4, 's'] lists[4] = "s" print(lists) # 在列表末尾新增元素和刪除列表的第一個元素, 結果為[2, 3, 4, 's', 'a'] lists.append("a") lists.pop(0) print(lists)
3.2 元組
元組與列表類似,使用()表示,元組與列表的區別在於:列表是可變的,即可以追加、刪除和修改其中的元素,而元組是不可變的,因為元組不提供append()方法來追加元素,所以當不確定元素個數時建議使用列表,當提前知道元素數量時使用元組,因為元素的位置很重要。例子說明如下
# 定義元組 tup1 = (1,2,3,"c","d") tup2 = (7,8,9) # 檢視元組,第一個列印結果是1 第二個列印結果是(7, 8) print(tup1[0]) print(tup2[0:2])
3.3 字典
字典用{}表示,每個元素由key和value組成,Python規定一個字典中的key必須是獨一無二的,value可以相同,例子說明如下
# 定義字典 dicts = {"usernama":"xiaoming","password":"12345"} # 列印字典中的所有key,keys()方法返回字典key的列表,結果是 dict_keys(['usernama', 'password']) print(dicts.keys()) # 列印字典中的所有value,values()方法返回字典value的列表,結果是dict_values(['xiaoming', '12345']) print(dicts.values()) # 列印字典以列表方法返回,items()方法將所有的字典元素以列表形式返回,結果是dict_items([('usernama', 'xiaoming'), ('password', '12345')]) print(dicts.items()) '''迴圈列印字典key和value, 結果是key的值為:'usernama' value的值為:'xiaoming' key的值為:'password' value的值為:'12345' ''' for k,v in dicts.items(): print("key的值為:%r" %k) print("value的值為:%r" %v) # 刪除key是password的項,結果是dict_items([('usernama', 'xiaoming')]) dicts.pop("password") print(dicts.items())
4、函式、類和方法
4.1 函式
用def關鍵字來定義函式,例子說明如下
# 例子1:定義add()函式,函式接收a,b兩個引數 def add(a,b): return a+b # 呼叫add()函式,並列印:通常add()函式不會直接列印結果,而是通過將return關鍵字返回,所以需要使用變數c接收add()函式的返回值 c = add(1,4) print(c) # 結果是 5 # 例子2:如果呼叫時不傳引數,那add()函式會使用預設引數進行計算,否則計算引數的值,c的結果是11,c1的結果是6 def add(a=1,b=5): return a+b c = add(4,7) c1 = add() print(c) print(c1)
4.2 類和方法
在物件導向程式設計的世界裡,一切皆為物件,抽象的一組物件就是類。比如汽車是一個類,而小明家的凱迪拉克就是一個具體的物件。用class關鍵字來建立類。
# 定義Myclass 類 class MyClass(object): def say(self,name): return "hello," + name # 呼叫MyClass類,結果是hello,GP mc = MyClass() print(mc.say("GP"))
5、模組
模組,也稱為類庫或模組。Python有自己的標準模組和第三方庫,比如要用時間有關的功能,可以呼叫python標準模組time,如果要實現web自動化測試,可以呼叫python第三方庫selenium。
5.1 呼叫模組
# 1: 通過import關鍵字呼叫time模組 import time # 2: 直接匯入ctime()函式 from time import ctime # 3:直接匯入time模組下多個函式或所有函式,使用時也是不用加time字首 from time import ctime, sleep from time import * # 一般不推薦這種做法 # 4:對匯入的函式重新命名,作用:若與自己定義的函式重名時可以採用這種 from time import ctime as nowtime # 1: 呼叫time模組下的ctime()函式用於獲得當前時間,結果是Sat May 1 06:49:35 2021 print(time.ctime()) # 2: 若是直接匯入某函式,則可以不用告訴python,ctime()是time模組提供的,直接用即可 print(ctime())
5.2 自定義模組
除了呼叫python標準模組和第三方庫外,還可以自己建立模組。
目錄project建立兩個檔案:a.py ,test.py
a.py檔案中建立add()函式
def add(a,b): return a+b
test.py檔案想呼叫a.py檔案中的add()函式,可以這麼寫,如下,這就實現了跨檔案的函式匯入
# 匯入a.py 檔案中的add函式 from a import add print(add(4,5))
5.3 跨目錄呼叫檔案
試了好久,沒呼叫成功,後面成功後再更新。