Python自動化測試筆記

  1. 代碼自動化測試知識:
    Why 用工具/代碼代替部分人工,節(jié)省人力資源过椎,提高測試效率;
    What 用腳本化語言控制自動化測試工具對軟件進行測試(代碼自動化)戏仓、工具自動化(jmeter rf疚宇, 別人開發(fā)好的,簡單但有局限性)赏殃;
    When 項目穩(wěn)定時(第一個版本通常不推薦)敷待,基本從第二個版本之后開始;
    How:回歸測試80%仁热、冒煙測試30%
    應(yīng)用:接口榜揖、UI、App抗蠢、小程序举哟、性能、H5

UI和APP自動化涉及到界面迅矛,可變形太大妨猩,自動化維護成本太高;
接口測試相對穩(wěn)定秽褒,所以接口自動化性價比更高壶硅;
面試回答:我工作中做過自動化測試威兜,主要在回歸測試階段,因為回歸測試工作特別繁瑣而且重復(fù)庐椒,用自動化會節(jié)省很多時間和人力椒舵。


  1. Python簡介
Python簡介

安裝好python,cmd進入命令行约谈,輸入<python>檢查python版本信息
輸入<pip -V>笔宿;安裝PyCharm


勾選Do not import settings

選擇 Create New Projec

選擇Existing interpreter

選擇System Interpreter
  1. 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{}等姑食;

  1. 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[::]晾蜘。

  1. 列表邻眷、元組、字典剔交、集合
    ??#列表增
    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ù)序列

  1. 函數(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ù)注釋


  1. Python接口測試思路:
  2. 請求方式確認
  3. 請求地址url
  4. 請求參數(shù)格式
  5. 請求頭
  6. 是否需要依賴接口
    注意??: 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ù)使用的;



接口自動化測試思路:

  1. 讀數(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)

  2. 執(zhí)行接口函數(shù)瞧筛,執(zhí)行結(jié)果
    res=requests.post(url=url,json=param,headers=header)
    apitest(url,param,header)

  3. 寫數(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)

  4. 保存
    wb.save(filepath)

excel數(shù)據(jù)是整型导盅,python讀取為整型较幌;excel數(shù)據(jù)為字典/元組/列表,python讀取為字符串;excel數(shù)據(jù)是浮點型白翻,python讀取為浮點型乍炉;


面試題匯總:

  1. 你能說說python列表、字典滤馍、元組的區(qū)別嗎岛琼?
  • 列表和元組的元素都是有序的,所以可以通過索引來取值巢株;
  • 元組的元素不可以被改變槐瑞,而列表元素可以增刪改查;
    字典在python3.6之前都是無序的阁苞,不能通過索引取值困檩,可以通過key來取value值;字典的key不能重復(fù)和修改那槽、value可以修改悼沿,而且鍵值對可以增加、刪除骚灸;
    舉例:list2=[‘男’糟趾,‘女’] dict1=dic( name=1,gender=list2[-1])
  1. 怎么去取出兩個列表中相同的元素?
    list3=[]
    for i in list1:
    for j in list2:
    if i==j:
    list3.append(i)

  2. 能解釋一下函數(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)鍵字傳參例获,后面位置傳參

  1. 你們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()))

  2. 說說你對函數(shù)的返回值的理解?
    函數(shù)結(jié)束后话侧,可以設(shè)置一個返回值栗精,給調(diào)用這個函數(shù)的代碼使用,這個返回數(shù)據(jù)叫做“返回值”。Python里面return來定義返回值悲立;
    return 可以返回一個值鹿寨、或者多個;不需要返回值薪夕,就默認返回None脚草;return語句標(biāo)志著函數(shù)的結(jié)束,return語句后面的語句不再執(zhí)行原献。

  3. 你們做自動化測試的時候用什么操作的測試用例馏慨?具體步驟說明?
    我們的測試用例都放在excel中姑隅,所以我們通過openpyxl庫來實現(xiàn)excel的讀寫宮恩功能写隶;把讀取到的內(nèi)容保存到列表、字典讲仰,方便后續(xù)使用慕趴。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鄙陡,隨后出現(xiàn)的幾起案子冕房,更是在濱河造成了極大的恐慌,老刑警劉巖趁矾,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耙册,死亡現(xiàn)場離奇詭異,居然都是意外死亡毫捣,警方通過查閱死者的電腦和手機觅玻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來培漏,“玉大人溪厘,你說我怎么就攤上這事∨票” “怎么了畸悬?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長珊佣。 經(jīng)常有香客問我蹋宦,道長,這世上最難降的妖魔是什么咒锻? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任惑艇,我火速辦了婚禮俺叭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己牍氛,他們只是感情好紊扬,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布腹缩。 她就那樣靜靜地躺著润讥,像睡著了一般竿痰。 火紅的嫁衣襯著肌膚如雪变隔。 梳的紋絲不亂的頭發(fā)上孵户,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天检柬,我揣著相機與錄音,去河邊找鬼竖配。 笑死何址,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的进胯。 我是一名探鬼主播用爪,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胁镐!你這毒婦竟也來了偎血?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤盯漂,失蹤者是張志新(化名)和其女友劉穎颇玷,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體就缆,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡帖渠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了竭宰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片空郊。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖切揭,靈堂內(nèi)的尸體忽然破棺而出狞甚,到底是詐尸還是另有隱情,我是刑警寧澤廓旬,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布入愧,位于F島的核電站,受9級特大地震影響嗤谚,放射性物質(zhì)發(fā)生泄漏棺蛛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一巩步、第九天 我趴在偏房一處隱蔽的房頂上張望旁赊。 院中可真熱鬧,春花似錦椅野、人聲如沸终畅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽离福。三九已至杖狼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妖爷,已是汗流浹背蝶涩。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留絮识,地道東北人绿聘。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像次舌,于是被迫代替她去往敵國和親熄攘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容