1.計算機歷史:四個階段
2. 操作系統(tǒng):
????????????1.移動端系統(tǒng):android和ios
? ? ? ? ? ? ?2.pc端:Windows linux,macOS,Unix3 Linux
1.Linux分類:Ubuntu ,centos,redhat
2 .虛擬機安裝
3. 虛擬機的創(chuàng)建
4.Linux命令
1.目錄切換
切換到根目錄 cd /? ?
切換到上一級目錄 cd../
切換到用戶主目錄 cd ~
切換到指定目錄 cd/usr
切換為超級用戶 su root
2.目錄
創(chuàng)建目錄:mkdir 目錄名稱
刪除目錄? rm? -rf ? 目錄名稱
移動目錄? mv? -r 被移動的目錄 ? 目標位置(想要移動到哪里)
復制目錄 cp -r被復制目錄 ? 目標位置目錄
查看目錄 ls ,ls -a,ls-l,(ll)
修改目錄名稱 mv 舊名字? 新名字
查找目錄 find? 目錄,find /-name 目錄
1 ssh安裝
2 jdk
3 Mysql
4 tomcat安裝,解壓? 開放端口
5 jenkins 持續(xù)化繼承工具
shell腳本
1.變量
定義變量:變量名=值
輸出:echo
雙引號:遇到$輸出變量值,但是被\處理為字符串
單引號:遇到$默認字符串
linux用反單引號`包裹
2.腳本輸出當前目錄
#!/bin/bash
dir=`pwd`
echo $dir
3 輸入,輸出,調(diào)用
echo
read
./sh
4 參數(shù)的傳遞格式:sh? a.sh 參數(shù)列表
$1:接收第一個參數(shù)~~$n
$n: 文件名稱
$@: 所有參數(shù) s
$#: 參數(shù)個數(shù)? $0
5 運算符
1邏輯
-a
-o
!
2 比較
1.數(shù)字
-eq
-ne
-gt
-lt
-le
2 字符串
==
!=
6.if
1.單條件語句
if [條件]
then
操作
else
操作語句
fi
2.多條件語句
if[條件]
then
語句
.
.
.
elif[ 條件 ]
then
語句
.
.
.
else
語句
fi
7.case
case "$變量名"in
"")
語句;;
esac
8 for
for i in 1 2 4
for i in `seq 開始值 間隔 結(jié)束值`
9 while
while [ 條件 ]
do
語句
done
函數(shù) :先定義,在調(diào)用
參數(shù) :返回值 0沒問題? 1有問題
jmeter
一.下載,配置,安裝
二.線程組
1.進程 ,線程,線程組
1.創(chuàng)建 :測試計劃-》添加-》線程-》線程組
2.3個參數(shù) 線程數(shù),準備時長,循環(huán)次數(shù)
三.http請求
指定域名,路徑
四 .查看結(jié)果(監(jiān)聽器)
1.察看結(jié)果樹
2.匯合報告
3.聚合報告
4.后端監(jiān)聽器
5.匯總圖
6.斷言結(jié)果
7.比較斷言可視化器
8.生成概要結(jié)果
9.圖形結(jié)果
五.事務控制器
事務控制器會生產(chǎn)一個額外的采樣器,用來統(tǒng)計該控制器子結(jié)點的所有時間。
在線程組下創(chuàng)建事務控制器
六. 邏輯控制器
七.循環(huán)控制器
八.斷言-檢查點
預先判斷可能會出現(xiàn)的字符串,如果匹配成功斷言成功,否則斷言失敗
????1.響應斷言
????2.json斷言
九.前置處理器和后置處理器
主要是生成請求之前和之后完成工作。
十.定時器
數(shù)組之間的間隔
Jmeter組件參數(shù)化
1.添加——>配置原件——>用戶定義變量
2.定義一個變量并賦值
3.在http請求中調(diào)用變量
4 在http請求電泳第二步中定義變量
5 數(shù)據(jù)庫導出TXT文件
函數(shù)助手
文件中不要出現(xiàn)中文
工具——>函數(shù)助手對話框
Jmeter正則表達式
線程組——>添加——>后置處理器——>正則表達式提取器
七單元——Jmeter腳本錄制
第一行要寫? ? #!/bin/bash
? ? vim 編輯
? ? 執(zhí)行:? ? ? ? ./文件名? ? ? ? sh 文件名
? ? chmod? 777 文件名? ? ? ? 修改文件權(quán)限
定義變量規(guī)則:
變量名=值? ?
shell定義變量的規(guī)則:
1: 等號兩邊不能有空格
2:定義特殊的變量需要用單引號或者雙引號結(jié)合
3:定義linux命令需要用反單引號
區(qū)分:
雙引號中有$變量名,輸出的是變量名對應的變量值
單引號中有$變量名,輸出的是$變量名
命名格式:腳本名稱用 . sh
腳本輸入輸出格式:
輸入語句用:read-p"描述"
Shell輸出值:echo$變量名
參數(shù)傳遞:
$1:接收第一個參數(shù)~~$n
$n: 文件名稱
$@: 所有參數(shù) s
$#: 參數(shù)個數(shù)? $0
比較運算符
1比較運算符(數(shù)字)
-eq 比較是否相等equal
-ne 比較不相等? ? ? ? ? notequal
-gt 比較大于? ? ? ? ? ? greater than
-ge? 比較大于等于? ? ?? greaterequal
-lt? 比較小于? ? ? ? ?? less than
-le? 比較小于等于? ? ?? lessequal
2計較運算符(字符串)
==? 比較是否相等
!=? 比較不相等
加一操作 : ((i++))((i+=1))
加n操作 : s=$(($s+$i))s=$[$s+$i]((s=$s+$i))
3邏輯運算符
-a? 邏輯與? ? -o邏輯或? ? ? !邏輯非
if語句
格式: if [ 條件 ]
? ? ? ? ? ? ?then
? ? ? ? ? ? ?語句
? ? ? ? ? ? ?else
? ? ? ? ? ? ?語句
? ? ? ? ? ? ?fi
多條件:if [ 條件 ]
????????????????then
????????????????語句
????????????????elif [ 條件 ]
????????????????then
????????????????語句
????????????????......
????????????????else
????????????????語句
????????????????fi
case規(guī)則:
格式:case $變量名 in
????????????"值")
????????????語句;;
????????????"值")
????????????語句;;
????????????.....
????????????esac
注意:1、case這第一行以in結(jié)尾
2、值可以是字符串也可以是數(shù)字, 如果數(shù)字范圍[0-9]?
? ??????????3、結(jié)束語句;;
? ??????????4、esac結(jié)束標志
for循環(huán)
格式:for 變量 in? 列表
????????????do
????????????語句
????????????done
數(shù)量過多時不能全列出來時:
? ??for i in `seq 1 2 100`
????do
????echo $i
????done
注意:in之后的 ` 內(nèi) seq mix step max
mix 開始數(shù)據(jù) step:間隔 max 結(jié)束數(shù)據(jù),如果step為1,可以省略,需要用反單引號,seq語句標志
While循環(huán)
格式:while [條 件 ]
? ? ????????????????????do
? ? ????????????????????語句
? ? ????????????????????done
注意:1、 while后面有空格
2、條件兩邊有空格
3、while條件里面存在變量,需要$,而且變量兩邊需要雙引號
4、done是結(jié)束標識
Shell腳本的函數(shù)
? ? 格式:函數(shù)名(){代碼 }
????????????????調(diào)用格式
????????????????函數(shù)名
函數(shù)中的參數(shù)使用$n來接收數(shù)據(jù)
函數(shù)中的返回值:Shell中函數(shù)默認存在返回值查看返回值是$?
如果沒有代碼錯誤默認返回值為0? ? ? ? ? ? 有代碼錯誤返回1
八單元——Jmeter
1、下載、配置、安裝
2、線程組
? ? 1、進程、線程、線程組
? ? 2、創(chuàng)建:測試計劃→添加→線程→線程組
? ? 3、三個參數(shù)
3、Http請求:
????????指定域名、路徑、端口、方法、指定參數(shù)、協(xié)議
4、查看結(jié)果 \ 監(jiān)聽器:
? ? ? ? 1、查看結(jié)果樹 **
? ? ? ? 2、圖形 結(jié)果? **
? ? ? ? 3、聚合報告
? ? ? ? 4、用圖表看結(jié)果? **
5、邏輯控制器
? ? ? ? 1、循環(huán)控制器
? ? ? ? 2、事務控制器(有開始、有結(jié)束)
6、斷言
? ? ? ? 預先判斷可能會出現(xiàn)的字符串。如果匹配成功,斷言成功。否則斷言失敗
7、處理器
前置處理器:前置處理器常常用來修改請求前的設(shè)置
后置處理器:后置處理器則常常用來處理響應后的數(shù)據(jù)
8、定時器
? ? ? ? ? ? 控制兩個請求之間的間隔? ??
9、參數(shù)化
????? ? 1、自定義變量
????????????1、添加→配置元件→用戶定義變量
? ????? ? ? 2、定義一個變量并賦值
????? ? ? ? 3、在http請求中調(diào)用變量$(變量名)
? ????? 2、引用文件中的變量
????? ? ? ? 1、添加→配置元件→CSV DAta Set Config
????? ? ? ? 2、設(shè)置線程組的線程數(shù)
????? ? ? ? 3、文件路徑、編碼、變量、用到文件結(jié)束符(true、false)
????? ? ? ? 4、在http請求中調(diào)用第二步中定義變量
? ????? ? ? 5、數(shù)據(jù)庫導出TXT文件
10、Jmeter 函數(shù)助手? ??
? ? ? ? 1、工具——》函數(shù)助手—>選擇CSVRead——> 文件路徑(必須放在bin里面)列名(0,1,2)——>生成
? ? ? ? 2、把生成的碼復制到HTTP請求界面參數(shù)值
11、腳本錄制
? ? ? ? 1、移動端錄制
? ? ? ? ? ? ? ? 1、保證同一網(wǎng)絡(luò)
? ? ? ? ? ? ? ? 2、jmeter——>測試計劃——>添加非測試元件——>Http服務代理——>
? ? ? ? 2、PC錄制:badboy
九單元——Python的基礎(chǔ)語句和語法
一、下載、安裝、第一個程序
二、變量
1、數(shù)據(jù)類型
? ? ? ? ? ? ? ? Numbers(數(shù)字型):int(整型)、long(長整型)、float(浮點型)、complex(復數(shù)型)
? ? ? ? ? ? ? ? bool(布爾型):true、false
? ? ? ? ? ? ? ? String(字符串)
? ? ? ? ? ? ? ? List(列表型)
? ? ? ? ? ? ? ? Tuple(元祖型)
????????????????Dictionary(字典)
2、標識符組成、命名規(guī)則
? ? ? ? ? ? ? ? 1、什么是標識符?
????????????????????????開發(fā)人員在程序中自定義的一些符號和名稱
????????????????????????標識符是自己定義的,如變量名 、函數(shù)名等
? ? ? ? ? ? ? ? 2、標識符命名規(guī)則
? ? ? ? ? ? ? ? ? ? ? ? 1)只能由字母、下劃線、數(shù)字組成
? ? ? ? ? ? ? ? ? ? ? ? 2)不能以數(shù)字開頭
? ? ? ? ? ? ? ? ? ? ? ? 3)不能使用關(guān)鍵字
? ? ? ? ? ? ? ? ? ? ? ? 4)嚴格區(qū)分大小寫
3、注釋
? ? ? ? ? ? ? ? 分為單行注釋和多行注釋
? ? ? ? ? ? ? ? ????單行注釋:光標移動至注釋行Ctrl+/
? ? ? ? ? ? ? ? ? ? 多行注釋:選中需要注釋內(nèi)容輸入‘’‘
? ? ? ? 4、關(guān)鍵字
三、輸入和輸出
? ? ? ? ? ? ? ? 輸入語句:input()用來獲取控制臺的輸入
? ? ? ? ? ? ? ? 輸出內(nèi)容:print(內(nèi)容)用于打印輸出,最常見的一個函數(shù)
? ??????????????????????objects -- 復數(shù),表示可以一次輸出多個對象。輸出多個對象時,需要用 , 分隔。
? ??????????????????????sep -- 用來間隔多個對象,默認值是一個空格。
? ??????????????????????end -- 用來設(shè)定以什么結(jié)尾。默認值是換行符 \n,我們可以換成其他字符串。
? ??????????????????????file -- 要寫入的文件對象。
四、運算符
1、賦值運算符:
簡單的賦值運算符:=
加法賦值運算符:+=
減法賦值運算符:- =
乘法賦值運算符:*=
除法賦值運算符:/=
取模賦值運算符:%=
冪賦值運算符:**=
取整賦值運算符://=
海象運算符::=在示例中,賦值表達式可以避免調(diào)用len()兩次
? ? ? ? 2、比較運算符
等于:==
不等于:!=
大于:>
小于:<
大于等于:>=
小于等于:<=
3、邏輯運算符
邏輯與:and
邏輯或:or
邏輯非:not
? ? ? ? 4、算數(shù)運算符
加:+
減:-
?乘:*
除:/
取模:%
冪/次方:**
取整://
五、判斷語句
1、if
? ??????????????????if 要判斷的條件:
? ? ? ? ????????????????????條件成立時,要做的事情
2、if? ? else
? ??????????????????if 要判斷的條件:
? ????????????????????????? 條件成立時,要做的事情
????????????????????else:
????????????????????????? ? 條件不成立時,要做的事情
? ? ? ? 3、if? ? elif? ? else
????????????????????if 要判斷的條件:
? ????????????????????????? 條件成立時,要做的事情
????????????????????elif 要判斷的條件:
????????????????????????? ? 條件成立時,要做的事情
????????????????????else:
????????????????????????? ? 條件不成立時,要做的事情
六、循環(huán)
1、while
????????????????????while 條件:
? ????????????????????????? 條件成立時,要做的事情
????????????????????????? ? 條件成立時,要做的事情
.....
? ? ? ? 2、for
????????????????????for 臨時變量 in 列表或者字符串等可迭代對象:
????????????????????????? ? 循環(huán)滿足條件時執(zhí)行的代碼
十單元——Python的列表
一、格式
變量=[,,,]
二、列表的新增
append, extend, insert
?append:直接在列表后方進行拼接添加的是一個元素(列表會占用一個索引位)
extend:直接在后方拼接追加的多個元素(列表會占用多個索引位)
?insert:對指定索引位進行新增數(shù)據(jù)(如果新增的索引不存在,則會默認添加到最后索引位)
三、列表的修改
? 1、通過索引來修改
? ? ? ? ? ? ? ? ? ? ? ? 列表名 [要修改的索引位]="要修改的內(nèi)容"
? ? ? ? ? ? ? ? ? ? ? ? ?。。∷饕淮嬖诘臅r候,會報錯
四、列表的刪除
1、del 刪除指定索引位的內(nèi)容
? ??????????????????????del????列表名????[需要刪除的索引]
2、pop 默認刪除最后一個元素
3、remove 根據(jù)元素的值來進行刪除
五、列表的查詢
index, count
1、ndex?查詢列表中的元素,如果存在就返回給元素的索引,不存在就報錯
? ? ? ? ? ? ? ? ? ? 格式:? ? 列表名稱 . index ( 查詢的內(nèi)容 )
2、count?查詢列表中的元素的個數(shù)
? ? ? ? ? ? ? ? ? ? 格式;? ? 列表名 . count ( 所要查詢個數(shù)的元素 )
六、列表的排序
1、sort 方法是將list按特定順序重新排列,默認為由小到大,參數(shù)reverse=True可改為倒序,由大到小。
2、reverse 方法是將 list 反轉(zhuǎn)
七、列表的循環(huán)取值
方法一:for????循環(huán)
? ? ? ? ? ? 方法二:while 循環(huán)
八、列表嵌套
變量=[,,,]
二、列表的新增
append, extend, insert
?append:直接在列表后方進行拼接添加的是一個元素(列表會占用一個索引位)
extend:直接在后方拼接追加的多個元素(列表會占用多個索引位)
?insert:對指定索引位進行新增數(shù)據(jù)(如果新增的索引不存在,則會默認添加到最后索引位)
三、列表的修改
? 1、通過索引來修改
? ? ? ? ? ? ? ? ? ? ? ? 列表名 [要修改的索引位]="要修改的內(nèi)容"
? ? ? ? ? ? ? ? ? ? ? ? ?。?!索引不存在的時候,會報錯
四、列表的刪除
1、del 刪除指定索引位的內(nèi)容
? ??????????????????????del????列表名????[需要刪除的索引]
2、pop 默認刪除最后一個元素
3、remove 根據(jù)元素的值來進行刪除
五、列表的查詢
index, count
1、ndex?查詢列表中的元素,如果存在就返回給元素的索引,不存在就報錯
? ? ? ? ? ? ? ? ? ? 格式:? ? 列表名稱 . index ( 查詢的內(nèi)容 )
2、count?查詢列表中的元素的個數(shù)
? ? ? ? ? ? ? ? ? ? 格式;? ? 列表名 . count ( 所要查詢個數(shù)的元素 )
六、列表的排序
1、sort 方法是將list按特定順序重新排列,默認為由小到大,參數(shù)reverse=True可改為倒序,由大到小。
2、reverse 方法是將 list 反轉(zhuǎn)
七、列表的循環(huán)取值
方法一:for????循環(huán)
? ? ? ? ? ? 方法二:while 循環(huán)
八、列表嵌套
格式:變量名 = [ , [ , ] ]
十一單元——元組和字典
一、元組
1、元組的格式
變量名=( , , , , )?
2、訪問元組
? ? ? ? ? ? ? ? 通過索引來取數(shù)據(jù):
? ? ? ? ? ? ? ? ? ? ? ? ? ? 索引存在時會輸出相對應索引的元素
? ? ? ? ? ? ? ? ? ? ? ? ? ? 索引不存在時會報錯
3、查詢個數(shù)
count查詢元素存在的個數(shù)
4、查詢索引
index查詢元素的索引,有對應元素返回索引,如果無則報錯
5、修改數(shù)據(jù)
? ? ? ? ? ? ? ? 元組不能修改數(shù)據(jù)(需與列表相互轉(zhuǎn)換之后才可改變元素)
6、類型轉(zhuǎn)換
元組轉(zhuǎn)列表:list(元組名)
列表轉(zhuǎn)元組:tuple(列表名)
7、元組循環(huán)取值
? ? ? ? ? ? ? ? 方法一:for循環(huán)取值
for? i? in? 元組名? :
print( i )
? ? ? ? ? ? ? ? 方法二:while 循環(huán)取值
? ? ? ? ? ? ? ? ? ? ? ? ? ? 先定義變量? ? i = 0
while? i? <? len(元組名):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print( 元組名 [ i ] )
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? i? +? =? 1
二、字典
1、字典格式
變量名={ key1 : value , key2 : value ,,,}
? ??????????????字典的每個元素由2部分組成,鍵(key):值(value)
2、根據(jù)鍵訪問值
? ? ? ? ? ? ? ? 有對應Key時,會輸出相應的Value值
info={"name":"anfly","age":18,"sex":"男"}
print ( info [ " name " ] )
# anfl
? ? ? ? ? ? ? ? 若無對應的Key時,則會報錯
? ? ? ? ? ? ? ? 如果不確定字典中是否存在某個鍵而又想獲取其值時,如何操作?
列表名 . get ( 不確定的key值 )
列表名 . get ( 不確定的key值? ,? 不存在時提示內(nèi)容)
3、修改元素
? ? ? ? ? ? ? ? 字典里每個元素都是可修改的,只要通過Key找到Value,即可修改,否則是新增
? ??????????????有對應的key則是修改數(shù)據(jù),沒有對應的key是新增數(shù)據(jù)
4、添加元素
格式:字典名 [ 新增Key值 ] = 新增 Value值
5、刪除元素
1)del
del? 字典名會刪除整個字典
del? 字典名? [ key值 ]會刪除指定元素
2)clear? ? 清空
字典名 . clear ( )?可以清除字典全部元素
6、查詢長度
?len ( 字典名 ) : 查詢鍵值對的個數(shù)
7、字典中循環(huán)
方法一:for? i? 字典名 . keys() :
print ( i , 字典名 [ i ] )
方法二:for? k , v? 字典名 . items():
print ( k , v )
方法三:for? i? in? 可迭代? :
print? ( i )
for? i? ,? ch? in? enumerate( Key值 ):
print ( i , ch )
十二單元——集合和函數(shù)
一.集合
定義特征:集合是無序的,集合中元素是唯一的,集合一般是用于元組或者列表中元素去重
格式:變量名=set()
? ? ? ? ? ? 變量名.add(元素)? ?#不能初始化
添加元素:add? update
刪除元素:remove? ? pop? ? ?discard
二.集合的交集和并集
交集:使用&連接多個集合,得到相同的元素
并集:使用|連接對個集合,得到全部集合中全部的元素
三.公共方法
運算符:* (復制)? ? ? +(合并)? ? ? in(元素是否存在)? ? ? not in(元素是否不存在)
python中的內(nèi)置函數(shù):

長度:len()
最大值:max()
刪除:del()
四.函數(shù)
定義:在開發(fā)程序時,需要某塊代碼多次,但是為了提高編寫的效率以及代碼的重用,所以把具有獨立功能的代碼塊組織為一個小模塊,這就是函數(shù)
格式:def? ?函數(shù)名():
????????????????????執(zhí)行語句
????????????函數(shù)名()
位置參數(shù)格式? ? ?def函數(shù)名(參數(shù)1,參數(shù)2):
????????????????????????????????????代碼塊
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?函數(shù)名(值1,值2)
定義時小括號中的參數(shù),用來接收參數(shù)用的,稱為 “形參”
調(diào)用時小括號中的參數(shù),用來傳遞給函數(shù)用的,稱為 “實參”
關(guān)鍵字參數(shù)格式:def函數(shù)名(參數(shù)1,參數(shù)2):
????????????????????????????????????代碼塊
????????????????????????????函數(shù)名(參數(shù)1=值1,參數(shù)2=值2)
缺省參數(shù)定義:在形參中默認有值的參數(shù),稱之為缺省參數(shù)
不定長參數(shù):有時可能需要一個函數(shù)處理比當初聲明時更多的參數(shù),這些參數(shù)叫做不定長參數(shù),聲明時不會命名
參數(shù)位置順序:deffun(位置參數(shù),*args,缺省參數(shù),**kwargs):
????????????????????????????????????代碼塊
????????????????????????????fun(參數(shù)值)
函數(shù)類型:
????1. 無參數(shù),無返回值:此類函數(shù),不能接收參數(shù),也沒有返回值,一般情況下,打印提示燈類似的功能,使用這類的函數(shù)
????2. 無參數(shù),有返回值:此類函數(shù),不能接收參數(shù),但是可以返回某個數(shù)據(jù),一般情況下,像采集數(shù)據(jù),用此類函數(shù)
????3. 有參數(shù),無返回值:此類函數(shù),能接收參數(shù),但不可以返回數(shù)據(jù),一般情況下,對某些變量設(shè)置數(shù)據(jù)而不需結(jié)果時,用此類函數(shù)
????4. 有參數(shù),有返回值:此類函數(shù),不僅能接收參數(shù),還可以返回某個數(shù)據(jù),一般情況下,像數(shù)據(jù)處理并需要結(jié)果的應用,用此類函數(shù)
函數(shù)的嵌套:一個函數(shù)里面又調(diào)用了另外一個函數(shù),這就是所謂的函數(shù)嵌套調(diào)用
五.變量
定義:
局部變量,就是在函數(shù)內(nèi)部定義的變量
全局變量,在函數(shù)外邊定義的變量叫做全局變量
十三單元——python的文件操作異常處理
一.文件的介紹
1.文件
2.文件的作業(yè)
二.文件的打開和關(guān)閉
1.打開文件
打開一個已經(jīng)存在的文件,或者新建一個文件

2.寫數(shù)據(jù)? write
3.讀數(shù)據(jù)? ? read? ?readline? ?readlines
4.可寫? a
5.讀數(shù)據(jù)? rd
6.寫數(shù)據(jù)? wb
7.關(guān)閉文件? ?close()
三.文件和文件夾的操作
1.文件重命名
os模塊中的rename()可以完成對文件的重命名操作
2.刪除文件
os模塊中remove()可以完成對文件的重命名操作
3.創(chuàng)建文件夾
os模塊中的mkdir()可以完成對文件的重命名操作
4.獲取當前目錄
os模塊中的getcwd()可以獲取當前目錄
四.異常
1.定義:異常即是一個事件,該事件會在程序執(zhí)行過程中發(fā)生,影響了程序的正常執(zhí)行。一般情況下,在Python無法正常處理程序時就會發(fā)生一個異常。異常是Python對象,表示一個錯誤。當Python腳本發(fā)生異常時我們需要捕獲處理它,否則程序會終止執(zhí)行。
2.作用
捕捉異??梢允褂胻ry/except語句。try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息并處理。如果你不想在異常發(fā)生時結(jié)束你的程序,只需在try里捕獲它。
3.語法
4.使用except而不帶任何異常類型
5.使用except而帶多種類型
6.try-finally語句
7.異常傳遞
8.觸發(fā)異常
9.用戶自定義異常
五.模塊
1.定義:Python 模塊(Module),是一個Python文件,以.py 結(jié)尾,包含了Python 對象定義和Python語句
2.引入:import
3.from...import語句
4.from...import*語句
六.python中的包
定義:包是一個分層次的文件目錄結(jié)構(gòu),它定義了一個由模塊及子包,和子包下的子包等組成的 Python 的應用環(huán)境。簡單來說,包就是文件夾,但該文件夾下必須存在init.py 文件, 該文件的內(nèi)容可以為空。init.py 用于標識當前文件夾是一個包。
第十五單元 Python單元測試之unittest
一、單元測試、集成測試、功能測試
單元測試:顆粒度最小,一般由開發(fā)小組采用白盒方式來測試,主要測試單元是否符合“設(shè)計”;是指對軟件中的最小可測試單元進行檢查和驗證
集成測試:介于單元測試和系統(tǒng)測試之間,一般由開發(fā)小組采用白盒加黑盒的方法測試,即驗證設(shè)計又驗證需求。主要用來測試模板與模板之間的接口,同時還要測試一些主要的業(yè)務功能。
功能測試:顆粒度最大,一般由獨立的測試小組采用黑盒的方式來測試,主要測試系統(tǒng)是否符合需求規(guī)格說明書。
一、UnitTest組成
? ? ? ? (1)setUp():準備環(huán)境,執(zhí)行每個測試用例的前置條件;????
????????(2)tearDown():環(huán)境還原,執(zhí)行每個測試用例的后置條件;?
????????(3)setUpClass():必須使用@classmethod裝飾器,所有case執(zhí)行的前置條件,只運行一次;
????????(4)tearDownClass():必須使用@classmethod裝飾器,所有case運行完后只運行一次;
1、testFixture
? ? ? ? ? ? 作用:用于一個測試環(huán)境的準備和銷毀還原
? ? 2、testCase
? ? ? ? ? ? 定義:就是一個測試用例
3、testSuite
? ? ? ? ? ? ?測試套件,可以將多個測試用例集合在一起,能一起執(zhí)行選中的測試用例
? 4、testRunner
? ? ? ? ? ? ?執(zhí)行測試用例
二、斷言
? ? ? ?(1)assertEqual(a,b):斷言a和b是否相等,相等則測試用例通過。(最常用的)
? ? ? ? (2)assertNotEqual(a,b):斷言a和b是否相等,不相等則測試用例通過。
? ? ? ? (3)assertTrue(x):斷言x是否True,是True則測試用例通過。
? ? ? ? (4)assertFalse(x):斷言x是否False,是False則測試用例通過。
? ? ? ?(5) assertIs(a,b):斷言a是? ??否是b,是則測試用例通過。
? ? ? ? (6)assertNotIs(a,b):斷言a是否是b,不是則測試用例通過。
? ? ? ? (7)assertIsNone(x):斷言x是否None,是None則測試用例通過。
? ? ? ?(8) assertIsNotNone(x):斷言x是否None,不是None則測試用例通過。
? ? ? ? (9)assertIn(a,b):斷言a是否在b中,在b中則測試用例通過。
? ? ? ?(10) assertNotIn(a,b):斷言a是否在b中,不在b中則測試用例通過。
? ?????(11)assertIsInstance(a,b):斷言a是是b的一個實例,是則測試用例通過。
? ? ? ? (12)assertNotIsInstance(a,b):斷言a是是b的一個實例,不是則測試用例通過。
三、生成測試報告
1、下載一個文件,HTMLTestRunner.py,復制到項目中
? ? ?2、使用
四、讀取CSV數(shù)據(jù)
? ? ? 1、創(chuàng)建CSV文件并添加數(shù)據(jù)
? 2、創(chuàng)建讀取CSV文件
? 3、在測試類中調(diào)用即可
五、xml讀取
? 1、創(chuàng)建xml文件
? 2、編寫讀取xml文件的文件
? ? 3、調(diào)用
第十六單元pytest
一、命名規(guī)則
? ? ? ? 1、先安裝pip install pytest 和 pip install pytest-html (生成html報告)
? ? ? ? 2、類名和方法名必須是以test開頭
二、自動生成html測試報告
方式一
? ? ? ? ? ? 1、pytest.main("模塊.py")【運行指定模塊下,運行所有test開頭的類和測試用例】
? ? ? ? ? ? 2、格式:pytest.main(["--html=./report.html","模塊.py"])
? ? ? ? 方式二
? ? ? ? ? ? 1、運行指定模塊指定類指定用例,冒號分割,并生成測試報告
? ? ? ? ? ? 2、格式:pytest.main([‘--html=./report.html’,‘模塊.py::類::test_a_001'])
? ? ? 方式三
? ? ? ? ? ? 1、Pytest調(diào)用語句
? ??????????-x:出現(xiàn)一條測試用例失敗就退出測試
????????????-v:豐富信息模式, 輸出更詳細的用例執(zhí)行信息
????????????-s:顯示print內(nèi)容
????????????-q:簡化結(jié)果信息,不會顯示每個用例的文件名
三、Pytest運行方式
? ? ? ? ? ? 1、“.”點號,表示通過
? ? ? ? ? ? 2、F表示失敗,F(xiàn)ailue
? ? ? ? ? ? 3、E表示用例中存在異常,Error
四、文件讀取
? ? ? ? ? ? (1)讀取csv文件:先創(chuàng)建文件,然后讀取
? ? ? ? ? ? (2)讀取xml文件
1、創(chuàng)建xml文件
? ???????????????????2、編寫讀取xml文件的文件
?? ??????????????????3、調(diào)用
五、Allure
? ? ? ? ? ? 概念:生成測試報告的框架? ? ? ? ? ??
? ? ? ? ? ? 1、先配置allure的環(huán)境變量
? ? ? ? ? ? 2、驗證allure是否配置成功
? ? ? ? ? ? 3、其次要安裝allure:pip install allure-pytest
? ? ? ? ? ? 4、allure常用的幾個特性
? ? ? ? ? ? ? ? ? ?(1) @allure.feature# 用于描述被測試產(chǎn)品需求
????????????????????(2)@allure.story# 用于描述feature的用戶場景,即測試需求
????????????????????(3)with allure.step():# 用于描述測試步驟,將會輸出到報告中
????????????????????(4)allure.attach# 用于向測試報告中輸入一些附加的信息,通常是一些測試數(shù)據(jù),截圖等
第十七單元Requests
一、介紹
? ? ? ? ? ?1、Requests是一個很實用的Python HTTP客戶端庫,是Python語言的第三方的庫,專門用于發(fā)送HTTP請求。
? ? ? ? ? ? 2、下載:pip install requests
????????????3、get請求
? ? ? ? ? ? (1)get無參、get傳參
? ? ? ? ? ? (2)post請求
二、Requests響應
? ??????????r.status_code? ? ? ? 響應狀態(tài)碼
????????????r.heards? ? ? ? ? ?? 響應頭
????????????r.cookies? ? ? ? ? ? 響應cookies
????????????r.text? ? ? ? ? ? ?? 響應文本
????????????r. encoding? ? ? ? ? 當前編碼
????????????r. content? ? ? ? ? 以字節(jié)形式(二進制)返回
三、Requests擴充
? ??????????1.添加等待時間:requests.get(url,timeout=1),如果超過等待時間則報錯
????????????2.添加請求頭信息:requests.get(url,headers=headers),設(shè)置請求頭
????????????3.添加文件:requests.post(url,files=files),添加文件
四、Requests+Pytest+Allure
? ? ? ? ? ? 1、流程:(1)讀取文件中的數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)requests拿到數(shù)據(jù)請求接口返回狀態(tài)碼
????????????????????????????(3)通過斷言驗證返回狀態(tài)碼和200對比
????????????????????????????(4)生成allure的測試報告
五、讀取csv文件
? ? ? ? 1、通過excel另存為csv即可
? ? ? ? 2、讀取數(shù)據(jù):readDemo
? ? ? ? 3、request請求接口返回狀態(tài)碼
? ? ? ? 4、pytest斷言設(shè)置并結(jié)合allure生成測試報告
? ? ? ? 5、測試報告展示
六、 讀取excle文件流程
? ? ? ? ? 1、存儲數(shù)據(jù)(xlsx)
? ??????????2、讀取數(shù)據(jù):readDemo????
? ??????????3、request請求接口返回狀態(tài)碼
? ??????????4、pytest斷言設(shè)置并結(jié)合allure生成測試報告
? ???????????5、測試報告展示
第十八單元自動化持續(xù)集成
一、概念
? ? ? ?1、 就是一套標準的流程,最重要的組成部分就是持續(xù)集成(Continuous integration,簡稱CI)
? ? ? ? 2、持續(xù)集成:頻繁地將代碼集成到主干。
? ? ? ? 3、持續(xù)交付:指的是,頻繁地將軟件的新版本,交付給質(zhì)量團隊評審。
? ? ? ? 4、持續(xù)部署:是持續(xù)交付的下一步,評審通過后,自動部署到生成環(huán)境。
二、Jenkins
? ? ? ? ? ? 1、概念:Jenkins 是一個開源軟件項目,是基于Java開發(fā)的一種可拓展持續(xù)集成工具,主要用于持續(xù)、自動地構(gòu)建 / 測試 / 集成軟件項目以及監(jiān)控一些定時執(zhí)行的任務。
? ? ? ? ? ? 2、目的:(1)持續(xù)、自動地構(gòu)建/測試軟件項目。
????????????????????????????(2)監(jiān)控軟件開放流程,快速問題定位及處理,提示開放效率。
? ? ? ? ? ? 3、特性:易于安裝、易于配置、通過 RSS 發(fā)布構(gòu)建結(jié)果或當構(gòu)建完成時通過 e-mail 通知、生成 JUnit / TestNG 測試報告、分布式構(gòu)建、插件支持,支持擴展插件
? ? ? ? ? ? 4、產(chǎn)品發(fā)布流程:產(chǎn)品設(shè)計成型 → 開發(fā)人員開發(fā)代碼 → 測試人員測試功能 → 運維人員發(fā)布上線
三、安裝Jenkins.war包
? ? ? ? ? ? ? ? (1)啟動方式:在tomcat的bin目錄下啟動(最常用)
? ? ? ? ? ? ? ? ? (2)方式2:打開cmd,進入jenkins目錄,然后運行命令:java -jar jenkins.war
四、搭建Jmeter+jenkins+ant持續(xù)化
? ? ? ? ? ? ? ? ? ?(1) Ant下載及配置安裝
????????????????????下載Apache-ant
????????????????????解壓到你想要安裝的目錄
????????????????????配置環(huán)境變量
????????????????????驗證是否安裝成功
????????????????????拷貝Jemter包到ant下
????????????????????新建一個build.xml文件
? ? ? ? ? ? ? ? ? ? (2)進行命令行模式后,進入剛才創(chuàng)建的xml文件存放目錄,如:D:\build 輸入ant即可
五、集成jenkins
? ??????????????????打開Jenkins,配置Ant環(huán)境
????????????????????新建一個自由風格任務
????????????????????構(gòu)建觸發(fā)器
????????????????????構(gòu)建配置
????????????????????配置HTML插件
????????????????????立即構(gòu)建
????????????????????針對報告中不顯示聚合報告的情況
????????????????????Jenkins執(zhí)行自動化測試后發(fā)送測試報告郵件
第十九單元自動化
一、自動化測試的好處
? ? ? ? ? ????1、? 縮短測試周期:計算機行業(yè)更新迭代快速,大量頻繁的回歸測試消耗時間,自動化測試能夠?qū)⒅貜偷膶嵭薪唤o計算機去做,加快測試速度。
????????????2、避免人為出錯:測試人員不可能持續(xù)高度集中,并且人類易受外界影響(頭疼腦熱,精神不振),可能會造成人為錯誤
????????????3、測試信息存儲:自動化測試將測試信息和數(shù)據(jù)儲存在文件中,思路清晰明確,交接方便
????????????4、輕易獲取覆蓋率:自動化測試能夠解放測試人員,使測試人員能夠有更多的精力做那些非重復性的工作。
????????????5、其他:自動化測試可以是實現(xiàn)自動或者定時執(zhí)行
注意:自動化測試的方向是對的,而且趨勢也是如此,但是有些自動化實現(xiàn)不了的還是會手動測試的。
二、自動化分類
? ? ? ? ? ? ? ?1、 整體分類
? ? ? ? ? ? ? ? ? ? (1)自動化功能測試
????????????????????(2)自動化性能測試
????????????????2、自動化功能測試的分類:
????????????????????(1)單元測試:程序員搞定
????????????????????(2)功能測試
????????????????????(3)接口測試:大中型項目或長期項目可以采用自動化測試
? ? ? ? ? ? ? ? ? ? 3、性能測試主要是使用測試工具
? ? ? ? ? ? ? ? ? ? ? (1)Loadrunner、Jmeter等,對軟件進行壓力測試、負載測試等等,因為這些無法用手工進行代替,所以必須自動化。
三、web自動化條件的使用和范圍
? ? ? ? ? ? ? ? ? ? 1、前提條件
? ? ? ? ? ? ? ? ? ? ? ? ? ?(1)手動測試已經(jīng)完成,后期再不影響進度的前提下逐漸實現(xiàn)自動化
? ? ? ? ? ? ? ? ? ? ? ? ? ?( 2)項目周期長,重復性的工作都交給機器去實現(xiàn)
? ? ? ? ? ? ? ? ? ? ? ? ? ?( 3)需求穩(wěn)定,項目變動不大
? ? ? ? ? ? ? ? ? ? ? ? ? ? (4)自動化測試腳本復雜度比較低
? ? ? ? ? ? ? ? ? ? ? ? ? ?( 5)可重復利用
? ? ? ? ? ? ? ? ? ? 2、使用自動化測試的場景
? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)頻繁的回歸測試
? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)冒煙測試
? ? ? ? ? ? ? ? ? ? ? ? ? ? (3)傳統(tǒng)行業(yè)需求變化不大,應用頻繁
? ? ? ? ? ? ? ? ? ? ? ? ? ? (4)性能測試
四、web自動化常用的工具
? ? ? ? ? ? 1、QTP(收費)
? ? ? ? ? ? 2、Selenium(開源)
? ? ? ? ? ? 3、RFT(收費)
? ? ? ? ? ? 4、(1)元素定位工具:css選擇器、xpath
? ? ? ? ? ? ? ? ? ? (2)環(huán)境工具:(1)firefox35
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(2)firebug插件
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(3)firepath插件
? ? ? ? ? ? 5、什么是xpath:XPath即為XML路徑語言,它是一種用來(標準通用標記語言的子集)在 HTML\XML 文檔中查找信息的語言。
? ? ? ? ? ? 6、什么是xml:XML 指可擴展標記語言(EXtensible Markup Language)XML 是一種標記語言,很類似 HTMLXML 的設(shè)計宗旨是傳輸數(shù)據(jù),而非顯示數(shù)據(jù)
? ? ? ? ? ? 7、(1)xml是設(shè)計為傳輸和存儲數(shù)據(jù)的。
? ? ? ? ? ? ? ? (2)html是顯示數(shù)據(jù)以及更好的顯示數(shù)據(jù)
? ? ? ? ? ? 8、獲取元素
? ? ? ? ? ? ? ? (1)nodename:選取此節(jié)點的所有子節(jié)點
? ? ? ? ? ? ? ? (2)/從根節(jié)點選取
? ? ? ? ? ? ? ? (3)//從匹配選擇當前節(jié)點選擇文檔的節(jié)點,不考慮位置
? ? ? ? ? ? ? ? (4)“.”選取當前節(jié)點
? ? ? ? ? ? ? ? ? (5)“..”選取當前節(jié)點的父節(jié)點
? ? ? ? ? ? ? ? (6)@選取屬性