- 代碼自動化測試知識:
Why 用工具/代碼代替部分人工,節(jié)省人力資源过椎,提高測試效率;
What 用腳本化語言控制自動化測試工具對軟件進行測試(代碼自動化)戏仓、工具自動化(jmeter rf疚宇, 別人開發(fā)好的,簡單但有局限性)赏殃;
When 項目穩(wěn)定時(第一個版本通常不推薦)敷待,基本從第二個版本之后開始;
How:回歸測試80%仁热、冒煙測試30%
應(yīng)用:接口榜揖、UI、App抗蠢、小程序举哟、性能、H5
UI和APP自動化涉及到界面迅矛,可變形太大妨猩,自動化維護成本太高;
接口測試相對穩(wěn)定秽褒,所以接口自動化性價比更高壶硅;
面試回答:我工作中做過自動化測試威兜,主要在回歸測試階段,因為回歸測試工作特別繁瑣而且重復(fù)庐椒,用自動化會節(jié)省很多時間和人力椒舵。
- Python簡介
安裝好python,cmd進入命令行约谈,輸入<python>檢查python版本信息
輸入<pip -V>笔宿;安裝PyCharm
- Python 基礎(chǔ)語法
標(biāo)識符要求:1. 數(shù)字、字母窗宇、下劃線組成措伐;2. 不能以數(shù)字開頭;3. 不能使用關(guān)鍵字
Python關(guān)鍵字:['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
語法規(guī)則:對縮進敏感军俊、代碼要頂格寫(除非父子關(guān)系)侥加、區(qū)分字母大小寫、函數(shù)名可以作為標(biāo)識符但不推薦粪躬;
數(shù)據(jù)類型:int担败、float、str镰官、bool( True=1提前,F(xiàn)alse=0)、列表泳唠、字典狈网、集合;
數(shù)據(jù)規(guī)則:int笨腥、float拓哺、str、bool脖母、列表[]士鸥、元祖()、字典{}
字符串取值:通過索引取值谆级;多個值通過切片(取頭不取尾烤礁、默認值)
內(nèi)置函數(shù):print()打印內(nèi)容到控制臺, input(), len()判斷數(shù)據(jù)長度, format(), type(), count(), index() 確定索引, find()等
eg:str1.count('F'), str1.find('pang')
運算符:算數(shù)運算、賦值運算肥照、比較運算脚仔、邏輯運算(與或非)、成員運算(in, not in)
Python中單行注釋以 # 開頭舆绎,例如:
??# 這是一個注釋
print("Hello, World!")
多行注釋用三個單引號 ''' 或者三個雙引號 """ 將注釋括起來
Python的常用數(shù)據(jù)類型:整型鲤脏、浮點型、字符串亿蒸、列表list[]凑兰、元組tuple()、字典dic{}边锁、集合set{}等姑食;
- Python格式化輸出:占位置的操作{} format()函數(shù)
如:
name='Lisa'
gender='girl'
print('''I am {}''' and is a {},format(name,gender))
or
print('''I am {0}''' and is a {1},format(name,gender))
or
print(F'''I am {name}''' and is a {gender})
or【%s萬能填充, %d整型填充】
print('''I am %s''' and is a %s'''%(name,gender))
字符串取值:位置即索引,[索引值] str[0], str[-1]
取多個值:切片茅坛,頭音半、尾、步長贡蓖,字符串[頭索引:尾索引:步長]曹鸠,取頭不取尾;默認值:頭為0斥铺,尾為不窮大彻桃,步長為1。 str[0:5:2], str[::]晾蜘。
- 列表邻眷、元組、字典剔交、集合
??#列表增
list1.append('nana')
list1.insert(1,'lala'), list1.insert(0,list2)
list1.extend(list2)
??#列表改,先找到賦值
list1[1]='niuniu'
??#列表刪
list1.pop() 默認刪除最后一個數(shù)據(jù)肆饶;list1.pop(-1)
list1.remove('nana') 刪除第一個值
list1.clear() 清空所有數(shù)據(jù)
元組:不支持增刪改,一定要操作岖常,強制轉(zhuǎn)換元組為列表驯镊,再轉(zhuǎn)回。list(tuple1) , tuple(tuple1)
字典 鍵值對竭鞍,{key:value}板惑,每個元素用逗號隔開,key不可重復(fù)笼蛛、不可變洒放,value可以增刪改。場景:描述物品的特性滨砍;dict1['key'] 找不到報錯, dict1.get('key'): 找不到返回None
字典增/修改往湿,指明key賦值
dict1['gender']='female'
dict1.update({'city':changsha,'height':180})
字典刪除:dict1.pop('key')
集合 無序,元素不可重復(fù)惋戏,去重 去除重復(fù)項: set(list1), list(list1)
控制流 if 判斷 和 for循環(huán)----控制代碼走向
break 終止循環(huán)领追,跳出循環(huán)體
continue 跳出本次循環(huán),不會終止搜有循環(huán)
range(0,11,2) range()用來生成整數(shù)序列
- 函數(shù)學(xué)習(xí)
def 函數(shù)名(a,b,*args, **kwargs): ??#占位置的變量名叫做形參
函數(shù)體
return XXX
返回值(return):函數(shù)執(zhí)行后有數(shù)據(jù)需要給到調(diào)用人使用响逢,那么這個數(shù)據(jù)的變量設(shè)置成函數(shù)的返回值绒窑,return后面跟需要的返回值。
必備參數(shù):定義了就必須傳舔亭;返回值的特點:一定是在函數(shù)體的最后一行些膨;
默認參數(shù):如果你有一些參數(shù)大概率使用蟀俊,可以設(shè)置一個默認值,默認參數(shù)在必須在必備參數(shù)后面订雾;
不定常參數(shù) *args:格式是元組肢预,當(dāng)傳入的參數(shù)個數(shù)未知,且不需要知道參數(shù)名稱時洼哎,參數(shù)寫在后面烫映;
關(guān)鍵字傳參 **kwargs的用法:當(dāng)傳入的參數(shù)個數(shù)未知,但需要知道參數(shù)的名稱時(鍵值對)噩峦,參數(shù)寫在后面锭沟;
選中函數(shù)中內(nèi)容,按shift+3個雙引號:函數(shù)注釋
- Python接口測試思路:
- 請求方式確認
- 請求地址url
- 請求參數(shù)格式
- 請求頭
- 是否需要依賴接口
注意??: requests(HTTP庫)里除了url识补,其余參數(shù)都是字典格式族淮;
安裝:pip install requests --user
兩種調(diào)用方法:
法一:
import request
requests.post(url,param,header)
法二:
from requests import post
post(url,param, header)
jsonpath用來解析json數(shù)據(jù)使用的;
接口自動化測試思路:
讀數(shù)據(jù)的函數(shù)
openpyxl 第三方庫,實現(xiàn)數(shù)據(jù)的讀取和寫入李请;
import openyxl
wb=openpyxl.load_workbook('數(shù)據(jù)的文件名')
sheet=wb[sheet]
print(sheet(row=1,column=2).value)
read_data(filepath,sheet)執(zhí)行接口函數(shù)瞧筛,執(zhí)行結(jié)果
res=requests.post(url=url,json=param,headers=header)
apitest(url,param,header)寫數(shù)據(jù)的函數(shù),與預(yù)期值做對比(即斷言)
res=apitest(url,param,header)
if res['msg'] == expected['msg']:
finresult='Pass'
else:
finresult='Failed'
sheet.cell(row=1,column=1).value=finresult
write(filepath,sheet,finresult,row,colum)保存
wb.save(filepath)
excel數(shù)據(jù)是整型导盅,python讀取為整型较幌;excel數(shù)據(jù)為字典/元組/列表,python讀取為字符串;excel數(shù)據(jù)是浮點型白翻,python讀取為浮點型乍炉;
面試題匯總:
- 你能說說python列表、字典滤馍、元組的區(qū)別嗎岛琼?
- 列表和元組的元素都是有序的,所以可以通過索引來取值巢株;
- 元組的元素不可以被改變槐瑞,而列表元素可以增刪改查;
字典在python3.6之前都是無序的阁苞,不能通過索引取值困檩,可以通過key來取value值;字典的key不能重復(fù)和修改那槽、value可以修改悼沿,而且鍵值對可以增加、刪除骚灸;
舉例:list2=[‘男’糟趾,‘女’] dict1=dic( name=1,gender=list2[-1])
怎么去取出兩個列表中相同的元素?
list3=[]
for i in list1:
for j in list2:
if i==j:
list3.append(i)能解釋一下函數(shù)的args和*kwargs兩種參數(shù)的區(qū)別?
這兩個都是函數(shù)的不定長參數(shù):函數(shù)調(diào)用的時候义郑,可傳可不傳蝶柿,也可以傳1個or多個;
*args:當(dāng)函數(shù)的必備參數(shù)和默認參數(shù)接受完后非驮,剩下的參數(shù)都會被它接受只锭,并且以元組的格式保存;傳參方式通過位置傳參院尔;
**kwargs當(dāng)函數(shù)的必備參數(shù)和默認參數(shù)接受完后,剩下的參數(shù)都會被它接受喉誊,但是這是以字典格式保存邀摆;而且這種需要用關(guān)鍵字傳參;
前面位置傳參伍茄,后面關(guān)鍵字傳參栋盹,eg,show(‘zhangsan’,age=18)敷矫;不可以前面關(guān)鍵字傳參例获,后面位置傳參
你們Python接口自動化測試用的什么庫?如何發(fā)送接口請求曹仗?
requests庫;
我們的接口協(xié)議都是Http協(xié)議榨汤,用的基本是get和post請求,request庫有很多自帶的方法怎茫,比如get收壕、post。我哦們從開發(fā)人員那邊得到接口的地址轨蛤、需要傳的參數(shù)蜜宪、對應(yīng)傳參方法發(fā)送到服務(wù)器接口;(res=request.post(url,param,headers))
然后得到相應(yīng)消息之后祥山,可以直接通過相應(yīng)的消息對應(yīng)的方法圃验,獲取到對應(yīng)的內(nèi)容,比如頁面內(nèi)容缝呕、響應(yīng)碼澳窑、響應(yīng)頭、cookies等岳颇;將得到的信息與預(yù)期結(jié)果對比照捡。(print(res.json()))說說你對函數(shù)的返回值的理解?
函數(shù)結(jié)束后话侧,可以設(shè)置一個返回值栗精,給調(diào)用這個函數(shù)的代碼使用,這個返回數(shù)據(jù)叫做“返回值”。Python里面return來定義返回值悲立;
return 可以返回一個值鹿寨、或者多個;不需要返回值薪夕,就默認返回None脚草;return語句標(biāo)志著函數(shù)的結(jié)束,return語句后面的語句不再執(zhí)行原献。你們做自動化測試的時候用什么操作的測試用例馏慨?具體步驟說明?
我們的測試用例都放在excel中姑隅,所以我們通過openpyxl庫來實現(xiàn)excel的讀寫宮恩功能写隶;把讀取到的內(nèi)容保存到列表、字典讲仰,方便后續(xù)使用慕趴。