1.計(jì)算機(jī)歷史:四個(gè)階段
2. 操作系統(tǒng):
????????????1.移動端系統(tǒng):android和ios
? ? ? ? ? ? ?2.pc端:Windows linux,macOS时呀,Unix3 Linux
1.Linux分類:Ubuntu ,centos筹误,redhat
2 .虛擬機(jī)安裝
3. 虛擬機(jī)的創(chuàng)建
4.Linux命令
1.目錄切換
切換到根目錄 cd /? ?
切換到上一級目錄 cd../
切換到用戶主目錄 cd ~
切換到指定目錄 cd/usr
切換為超級用戶 su root
2.目錄
創(chuàng)建目錄:mkdir 目錄名稱
刪除目錄? rm? -rf ? 目錄名稱
移動目錄? mv? -r 被移動的目錄 ? 目標(biāo)位置(想要移動到哪里)
復(fù)制目錄 cp -r被復(fù)制目錄 ? 目標(biāo)位置目錄
查看目錄 ls 磺送,ls -a代虾,ls-l歉摧,(ll)
修改目錄名稱 mv 舊名字? 新名字
查找目錄 find? 目錄艇肴,find /-name 目錄
1 ssh安裝
2 jdk
3 Mysql
4 tomcat安裝,解壓? 開放端口
5 jenkins 持續(xù)化繼承工具
shell腳本
1.變量
定義變量:變量名=值
輸出:echo
雙引號:遇到$輸出變量值育谬,但是被\處理為字符串
單引號:遇到$默認(rèn)字符串
linux用反單引號`包裹
2.腳本輸出當(dāng)前目錄
#!/bin/bash
dir=`pwd`
echo $dir
3 輸入帮哈,輸出娘侍,調(diào)用
echo
read
./sh
4 參數(shù)的傳遞格式:sh? a.sh 參數(shù)列表
$1:接收第一個(gè)參數(shù)~~$n
$n: 文件名稱
$@: 所有參數(shù) s
$#: 參數(shù)個(gè)數(shù)? $0
5 運(yùn)算符
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.進(jìn)程 氧腰,線程,線程組
1.創(chuàng)建 :測試計(jì)劃-》添加-》線程-》線程組
2.3個(gè)參數(shù) 線程數(shù)刨肃,準(zhǔn)備時(shí)長古拴,循環(huán)次數(shù)
三.http請求
指定域名,路徑
四 .查看結(jié)果(監(jiān)聽器)
1.察看結(jié)果樹
2.匯合報(bào)告
3.聚合報(bào)告
4.后端監(jiān)聽器
5.匯總圖
6.斷言結(jié)果
7.比較斷言可視化器
8.生成概要結(jié)果
9.圖形結(jié)果
五.事務(wù)控制器
事務(wù)控制器會生產(chǎn)一個(gè)額外的采樣器真友,用來統(tǒng)計(jì)該控制器子結(jié)點(diǎn)的所有時(shí)間黄痪。
在線程組下創(chuàng)建事務(wù)控制器
六. 邏輯控制器
七.循環(huán)控制器
八.斷言-檢查點(diǎn)
預(yù)先判斷可能會出現(xiàn)的字符串,如果匹配成功斷言成功盔然,否則斷言失敗
????1.響應(yīng)斷言
????2.json斷言
九.前置處理器和后置處理器
主要是生成請求之前和之后完成工作桅打。
十.定時(shí)器
數(shù)組之間的間隔
Jmeter組件參數(shù)化
1.添加——>配置原件——>用戶定義變量
2.定義一個(gè)變量并賦值
3.在http請求中調(diào)用變量
4 在http請求電泳第二步中定義變量
5 數(shù)據(jù)庫導(dǎo)出TXT文件
函數(shù)助手
文件中不要出現(xiàn)中文
工具——>函數(shù)助手對話框
Jmeter正則表達(dá)式
線程組——>添加——>后置處理器——>正則表達(dá)式提取器
七單元——Jmeter腳本錄制
第一行要寫? ? #!/bin/bash
? ? vim 編輯
? ? 執(zhí)行:? ? ? ? ./文件名? ? ? ? sh 文件名
? ? chmod? 777 文件名? ? ? ? 修改文件權(quán)限
定義變量規(guī)則:
變量名=值? ?
shell定義變量的規(guī)則:
1: 等號兩邊不能有空格
2:定義特殊的變量需要用單引號或者雙引號結(jié)合
3:定義linux命令需要用反單引號
區(qū)分:
雙引號中有$變量名,輸出的是變量名對應(yīng)的變量值
單引號中有$變量名愈案,輸出的是$變量名
命名格式:腳本名稱用 . sh
腳本輸入輸出格式:
輸入語句用:read-p"描述"
Shell輸出值:echo$變量名
參數(shù)傳遞:
$1:接收第一個(gè)參數(shù)~~$n
$n: 文件名稱
$@: 所有參數(shù) s
$#: 參數(shù)個(gè)數(shù)? $0
比較運(yùn)算符
1比較運(yùn)算符(數(shù)字)
-eq 比較是否相等equal
-ne 比較不相等? ? ? ? ? notequal
-gt 比較大于? ? ? ? ? ? greater than
-ge? 比較大于等于? ? ?? greaterequal
-lt? 比較小于? ? ? ? ?? less than
-le? 比較小于等于? ? ?? lessequal
2計(jì)較運(yùn)算符(字符串)
==? 比較是否相等
!=? 比較不相等
加一操作 : ((i++))((i+=1))
加n操作 : s=$(($s+$i))s=$[$s+$i]((s=$s+$i))
3邏輯運(yùn)算符
-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é)束標(biāo)志
for循環(huán)
格式:for 變量 in? 列表
????????????do
????????????語句
????????????done
數(shù)量過多時(shí)不能全列出來時(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語句標(biāo)志
While循環(huán)
格式:while [條 件 ]
? ? ????????????????????do
? ? ????????????????????語句
? ? ????????????????????done
注意:1、 while后面有空格
2矫钓、條件兩邊有空格
3、while條件里面存在變量概龄,需要$,而且變量兩邊需要雙引號
4、done是結(jié)束標(biāo)識
Shell腳本的函數(shù)
? ? 格式:函數(shù)名(){代碼 }
????????????????調(diào)用格式
????????????????函數(shù)名
函數(shù)中的參數(shù)使用$n來接收數(shù)據(jù)
函數(shù)中的返回值:Shell中函數(shù)默認(rèn)存在返回值查看返回值是$衰粹?
如果沒有代碼錯誤默認(rèn)返回值為0? ? ? ? ? ? 有代碼錯誤返回1
八單元——Jmeter
1、下載田篇、配置、安裝
2兽赁、線程組
? ? 1、進(jìn)程亮钦、線程蜡娶、線程組
? ? 2、創(chuàng)建:測試計(jì)劃→添加→線程→線程組
? ? 3蚁滋、三個(gè)參數(shù)
3睦霎、Http請求:
????????指定域名低剔、路徑姻锁、端口、方法涧黄、指定參數(shù)、協(xié)議
4春宣、查看結(jié)果 \ 監(jiān)聽器:
? ? ? ? 1、查看結(jié)果樹 **
? ? ? ? 2、圖形 結(jié)果? **
? ? ? ? 3潦蝇、聚合報(bào)告
? ? ? ? 4贤牛、用圖表看結(jié)果? **
5、邏輯控制器
? ? ? ? 1般卑、循環(huán)控制器
? ? ? ? 2蝠检、事務(wù)控制器(有開始、有結(jié)束)
6焰檩、斷言
? ? ? ? 預(yù)先判斷可能會出現(xiàn)的字符串穿扳。如果匹配成功顿乒,斷言成功。否則斷言失敗
7骨杂、處理器
前置處理器:前置處理器常常用來修改請求前的設(shè)置
后置處理器:后置處理器則常常用來處理響應(yīng)后的數(shù)據(jù)
8、定時(shí)器
? ? ? ? ? ? 控制兩個(gè)請求之間的間隔? ??
9悴能、參數(shù)化
????? ? 1、自定義變量
????????????1、添加→配置元件→用戶定義變量
? ????? ? ? 2夫凸、定義一個(gè)變量并賦值
????? ? ? ? 3、在http請求中調(diào)用變量$(變量名)
? ????? 2鸽扁、引用文件中的變量
????? ? ? ? 1滓窍、添加→配置元件→CSV DAta Set Config
????? ? ? ? 2、設(shè)置線程組的線程數(shù)
????? ? ? ? 3裆赵、文件路徑桨嫁、編碼楣导、變量、用到文件結(jié)束符(true驮宴、false)
????? ? ? ? 4幻赚、在http請求中調(diào)用第二步中定義變量
? ????? ? ? 5、數(shù)據(jù)庫導(dǎo)出TXT文件
10臊旭、Jmeter 函數(shù)助手? ??
? ? ? ? 1落恼、工具——》函數(shù)助手—>選擇CSVRead——> 文件路徑(必須放在bin里面)列名(0,1离熏,2)——>生成
? ? ? ? 2佳谦、把生成的碼復(fù)制到HTTP請求界面參數(shù)值
11滋戳、腳本錄制
? ? ? ? 1蓄拣、移動端錄制
? ? ? ? ? ? ? ? 1、保證同一網(wǎng)絡(luò)
? ? ? ? ? ? ? ? 2雁竞、jmeter——>測試計(jì)劃——>添加非測試元件——>Http服務(wù)代理——>
? ? ? ? 2格嗅、PC錄制:badboy
九單元——Python的基礎(chǔ)語句和語法
一绍坝、下載劳澄、安裝三娩、第一個(gè)程序
二蔚万、變量
1悼尾、數(shù)據(jù)類型
? ? ? ? ? ? ? ? Numbers(數(shù)字型):int(整型)、long(長整型)爬泥、float(浮點(diǎn)型)、complex(復(fù)數(shù)型)
? ? ? ? ? ? ? ? bool(布爾型):true、false
? ? ? ? ? ? ? ? String(字符串)
? ? ? ? ? ? ? ? List(列表型)
? ? ? ? ? ? ? ? Tuple(元祖型)
????????????????Dictionary(字典)
2、標(biāo)識符組成咳蔚、命名規(guī)則
? ? ? ? ? ? ? ? 1啦租、什么是標(biāo)識符?
????????????????????????開發(fā)人員在程序中自定義的一些符號和名稱
????????????????????????標(biāo)識符是自己定義的,如變量名 挂据、函數(shù)名等
? ? ? ? ? ? ? ? 2、標(biāo)識符命名規(guī)則
? ? ? ? ? ? ? ? ? ? ? ? 1)只能由字母踏幻、下劃線枷颊、數(shù)字組成
? ? ? ? ? ? ? ? ? ? ? ? 2)不能以數(shù)字開頭
? ? ? ? ? ? ? ? ? ? ? ? 3)不能使用關(guān)鍵字
? ? ? ? ? ? ? ? ? ? ? ? 4)嚴(yán)格區(qū)分大小寫
3、注釋
? ? ? ? ? ? ? ? 分為單行注釋和多行注釋
? ? ? ? ? ? ? ? ????單行注釋:光標(biāo)移動至注釋行Ctrl+/
? ? ? ? ? ? ? ? ? ? 多行注釋:選中需要注釋內(nèi)容輸入‘’‘
? ? ? ? 4该面、關(guān)鍵字
三夭苗、輸入和輸出
? ? ? ? ? ? ? ? 輸入語句:input()用來獲取控制臺的輸入
? ? ? ? ? ? ? ? 輸出內(nèi)容:print(內(nèi)容)用于打印輸出,最常見的一個(gè)函數(shù)
? ??????????????????????objects -- 復(fù)數(shù)隔缀,表示可以一次輸出多個(gè)對象题造。輸出多個(gè)對象時(shí),需要用 , 分隔猾瘸。
? ??????????????????????sep -- 用來間隔多個(gè)對象界赔,默認(rèn)值是一個(gè)空格丢习。
? ??????????????????????end -- 用來設(shè)定以什么結(jié)尾。默認(rèn)值是換行符 \n淮悼,我們可以換成其他字符串咐低。
? ??????????????????????file -- 要寫入的文件對象。
四袜腥、運(yùn)算符
1见擦、賦值運(yùn)算符:
簡單的賦值運(yùn)算符:=
加法賦值運(yùn)算符:+=
減法賦值運(yùn)算符:- =
乘法賦值運(yùn)算符:*=
除法賦值運(yùn)算符:/=
取模賦值運(yùn)算符:%=
冪賦值運(yùn)算符:**=
取整賦值運(yùn)算符://=
海象運(yùn)算符::=在示例中,賦值表達(dá)式可以避免調(diào)用len()兩次
? ? ? ? 2羹令、比較運(yùn)算符
等于:==
不等于:!=
大于:>
小于:<
大于等于:>=
小于等于:<=
3锡宋、邏輯運(yùn)算符
邏輯與:and
邏輯或:or
邏輯非:not
? ? ? ? 4、算數(shù)運(yùn)算符
加:+
減:-
?乘:*
除:/
取模:%
冪/次方:**
取整://
五特恬、判斷語句
1执俩、if
? ??????????????????if 要判斷的條件:
? ? ? ? ????????????????????條件成立時(shí),要做的事情
2癌刽、if? ? else
? ??????????????????if 要判斷的條件:
? ????????????????????????? 條件成立時(shí)役首,要做的事情
????????????????????else:
????????????????????????? ? 條件不成立時(shí),要做的事情
? ? ? ? 3显拜、if? ? elif? ? else
????????????????????if 要判斷的條件:
? ????????????????????????? 條件成立時(shí)衡奥,要做的事情
????????????????????elif 要判斷的條件:
????????????????????????? ? 條件成立時(shí),要做的事情
????????????????????else:
????????????????????????? ? 條件不成立時(shí)远荠,要做的事情
六矮固、循環(huán)
1、while
????????????????????while 條件:
? ????????????????????????? 條件成立時(shí)譬淳,要做的事情
????????????????????????? ? 條件成立時(shí)档址,要做的事情
.....
? ? ? ? 2、for
????????????????????for 臨時(shí)變量 in 列表或者字符串等可迭代對象:
????????????????????????? ? 循環(huán)滿足條件時(shí)執(zhí)行的代碼
十單元——Python的列表
一邻梆、格式
變量=[守伸,,浦妄,]
二尼摹、列表的新增
append, extend, insert
?append:直接在列表后方進(jìn)行拼接添加的是一個(gè)元素(列表會占用一個(gè)索引位)
extend:直接在后方拼接追加的多個(gè)元素(列表會占用多個(gè)索引位)
?insert:對指定索引位進(jìn)行新增數(shù)據(jù)(如果新增的索引不存在,則會默認(rèn)添加到最后索引位)
三剂娄、列表的修改
? 1蠢涝、通過索引來修改
? ? ? ? ? ? ? ? ? ? ? ? 列表名 [要修改的索引位]="要修改的內(nèi)容"
? ? ? ? ? ? ? ? ? ? ? ? !T呐场和二!索引不存在的時(shí)候,會報(bào)錯
四故黑、列表的刪除
1儿咱、del 刪除指定索引位的內(nèi)容
? ??????????????????????del????列表名????[需要刪除的索引]
2庭砍、pop 默認(rèn)刪除最后一個(gè)元素
3场晶、remove 根據(jù)元素的值來進(jìn)行刪除
五混埠、列表的查詢
index, count
1、ndex?查詢列表中的元素诗轻,如果存在就返回給元素的索引钳宪,不存在就報(bào)錯
? ? ? ? ? ? ? ? ? ? 格式:? ? 列表名稱 . index ( 查詢的內(nèi)容 )
2、count?查詢列表中的元素的個(gè)數(shù)
? ? ? ? ? ? ? ? ? ? 格式;? ? 列表名 . count ( 所要查詢個(gè)數(shù)的元素 )
六扳炬、列表的排序
1吏颖、sort 方法是將list按特定順序重新排列,默認(rèn)為由小到大恨樟,參數(shù)reverse=True可改為倒序半醉,由大到小。
2劝术、reverse 方法是將 list 反轉(zhuǎn)
七缩多、列表的循環(huán)取值
方法一:for????循環(huán)
? ? ? ? ? ? 方法二:while 循環(huán)
八、列表嵌套
變量=[养晋,衬吆,,]
二绳泉、列表的新增
append, extend, insert
?append:直接在列表后方進(jìn)行拼接添加的是一個(gè)元素(列表會占用一個(gè)索引位)
extend:直接在后方拼接追加的多個(gè)元素(列表會占用多個(gè)索引位)
?insert:對指定索引位進(jìn)行新增數(shù)據(jù)(如果新增的索引不存在逊抡,則會默認(rèn)添加到最后索引位)
三、列表的修改
? 1零酪、通過索引來修改
? ? ? ? ? ? ? ? ? ? ? ? 列表名 [要修改的索引位]="要修改的內(nèi)容"
? ? ? ? ? ? ? ? ? ? ? ? C暗铡!四苇!索引不存在的時(shí)候灯谣,會報(bào)錯
四、列表的刪除
1蛔琅、del 刪除指定索引位的內(nèi)容
? ??????????????????????del????列表名????[需要刪除的索引]
2胎许、pop 默認(rèn)刪除最后一個(gè)元素
3、remove 根據(jù)元素的值來進(jìn)行刪除
五罗售、列表的查詢
index, count
1辜窑、ndex?查詢列表中的元素,如果存在就返回給元素的索引寨躁,不存在就報(bào)錯
? ? ? ? ? ? ? ? ? ? 格式:? ? 列表名稱 . index ( 查詢的內(nèi)容 )
2穆碎、count?查詢列表中的元素的個(gè)數(shù)
? ? ? ? ? ? ? ? ? ? 格式;? ? 列表名 . count ( 所要查詢個(gè)數(shù)的元素 )
六、列表的排序
1职恳、sort 方法是將list按特定順序重新排列所禀,默認(rèn)為由小到大方面,參數(shù)reverse=True可改為倒序,由大到小色徘。
2恭金、reverse 方法是將 list 反轉(zhuǎn)
七、列表的循環(huán)取值
方法一:for????循環(huán)
? ? ? ? ? ? 方法二:while 循環(huán)
八褂策、列表嵌套
格式:變量名 = [ , [ , ] ]
十一單元——元組和字典
一横腿、元組
1、元組的格式
變量名=( , , , , )?
2斤寂、訪問元組
? ? ? ? ? ? ? ? 通過索引來取數(shù)據(jù):
? ? ? ? ? ? ? ? ? ? ? ? ? ? 索引存在時(shí)會輸出相對應(yīng)索引的元素
? ? ? ? ? ? ? ? ? ? ? ? ? ? 索引不存在時(shí)會報(bào)錯
3耿焊、查詢個(gè)數(shù)
count查詢元素存在的個(gè)數(shù)
4、查詢索引
index查詢元素的索引遍搞,有對應(yīng)元素返回索引罗侯,如果無則報(bào)錯
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 ,,,}
? ??????????????字典的每個(gè)元素由2部分組成榜苫,鍵(key):值(value)
2、根據(jù)鍵訪問值
? ? ? ? ? ? ? ? 有對應(yīng)Key時(shí)翎冲,會輸出相應(yīng)的Value值
info={"name":"anfly","age":18,"sex":"男"}
print ( info [ " name " ] )
# anfl
? ? ? ? ? ? ? ? 若無對應(yīng)的Key時(shí)垂睬,則會報(bào)錯
? ? ? ? ? ? ? ? 如果不確定字典中是否存在某個(gè)鍵而又想獲取其值時(shí),如何操作?
列表名 . get ( 不確定的key值 )
列表名 . get ( 不確定的key值? ,? 不存在時(shí)提示內(nèi)容)
3抗悍、修改元素
? ? ? ? ? ? ? ? 字典里每個(gè)元素都是可修改的驹饺,只要通過Key找到Value,即可修改缴渊,否則是新增
? ??????????????有對應(yīng)的key則是修改數(shù)據(jù)赏壹,沒有對應(yīng)的key是新增數(shù)據(jù)
4、添加元素
格式:字典名 [ 新增Key值 ] = 新增 Value值
5衔沼、刪除元素
1)del
del? 字典名會刪除整個(gè)字典
del? 字典名? [ key值 ]會刪除指定元素
2)clear? ? 清空
字典名 . clear ( )?可以清除字典全部元素
6蝌借、查詢長度
?len ( 字典名 ) : 查詢鍵值對的個(gè)數(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
二.集合的交集和并集
交集:使用&連接多個(gè)集合,得到相同的元素
并集:使用|連接對個(gè)集合凝化,得到全部集合中全部的元素
三.公共方法
運(yùn)算符:* (復(fù)制)? ? ? +(合并)? ? ? in(元素是否存在)? ? ? not in(元素是否不存在)
python中的內(nèi)置函數(shù):
長度:len()
最大值:max()
刪除:del()
四.函數(shù)
定義:在開發(fā)程序時(shí)稍坯,需要某塊代碼多次,但是為了提高編寫的效率以及代碼的重用搓劫,所以把具有獨(dú)立功能的代碼塊組織為一個(gè)小模塊瞧哟,這就是函數(shù)
格式:def? ?函數(shù)名():
????????????????????執(zhí)行語句
????????????函數(shù)名()
位置參數(shù)格式? ? ?def函數(shù)名(參數(shù)1,參數(shù)2):
????????????????????????????????????代碼塊
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?函數(shù)名(值1,值2)
定義時(shí)小括號中的參數(shù)混巧,用來接收參數(shù)用的,稱為 “形參”
調(diào)用時(shí)小括號中的參數(shù)勤揩,用來傳遞給函數(shù)用的咧党,稱為 “實(shí)參”
關(guān)鍵字參數(shù)格式:def函數(shù)名(參數(shù)1,參數(shù)2):
????????????????????????????????????代碼塊
????????????????????????????函數(shù)名(參數(shù)1=值1,參數(shù)2=值2)
缺省參數(shù)定義:在形參中默認(rèn)有值的參數(shù),稱之為缺省參數(shù)
不定長參數(shù):有時(shí)可能需要一個(gè)函數(shù)處理比當(dāng)初聲明時(shí)更多的參數(shù)雄可,這些參數(shù)叫做不定長參數(shù)凿傅,聲明時(shí)不會命名
參數(shù)位置順序:deffun(位置參數(shù),*args,缺省參數(shù),**kwargs):
????????????????????????????????????代碼塊
????????????????????????????fun(參數(shù)值)
函數(shù)類型:
????1. 無參數(shù)缠犀,無返回值:此類函數(shù)数苫,不能接收參數(shù),也沒有返回值辨液,一般情況下虐急,打印提示燈類似的功能,使用這類的函數(shù)
????2. 無參數(shù)滔迈,有返回值:此類函數(shù)止吁,不能接收參數(shù),但是可以返回某個(gè)數(shù)據(jù)燎悍,一般情況下敬惦,像采集數(shù)據(jù),用此類函數(shù)
????3. 有參數(shù)谈山,無返回值:此類函數(shù)俄删,能接收參數(shù),但不可以返回?cái)?shù)據(jù)奏路,一般情況下畴椰,對某些變量設(shè)置數(shù)據(jù)而不需結(jié)果時(shí),用此類函數(shù)
????4. 有參數(shù)鸽粉,有返回值:此類函數(shù)斜脂,不僅能接收參數(shù),還可以返回某個(gè)數(shù)據(jù)触机,一般情況下帚戳,像數(shù)據(jù)處理并需要結(jié)果的應(yīng)用,用此類函數(shù)
函數(shù)的嵌套:一個(gè)函數(shù)里面又調(diào)用了另外一個(gè)函數(shù)儡首,這就是所謂的函數(shù)嵌套調(diào)用
五.變量
定義:
局部變量片任,就是在函數(shù)內(nèi)部定義的變量
全局變量,在函數(shù)外邊定義的變量叫做全局變量
十三單元——python的文件操作異常處理
一.文件的介紹
1.文件
2.文件的作業(yè)
二.文件的打開和關(guān)閉
1.打開文件
打開一個(gè)已經(jīng)存在的文件椒舵,或者新建一個(gè)文件
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.獲取當(dāng)前目錄
os模塊中的getcwd()可以獲取當(dāng)前目錄
四.異常
1.定義:異常即是一個(gè)事件蚂踊,該事件會在程序執(zhí)行過程中發(fā)生,影響了程序的正常執(zhí)行笔宿。一般情況下犁钟,在Python無法正常處理程序時(shí)就會發(fā)生一個(gè)異常棱诱。異常是Python對象,表示一個(gè)錯誤涝动。當(dāng)Python腳本發(fā)生異常時(shí)我們需要捕獲處理它迈勋,否則程序會終止執(zhí)行幕庐。
2.作用
捕捉異城幕危可以使用try/except語句。try/except語句用來檢測try語句塊中的錯誤国夜,從而讓except語句捕獲異常信息并處理米愿。如果你不想在異常發(fā)生時(shí)結(jié)束你的程序厦凤,只需在try里捕獲它。
3.語法
4.使用except而不帶任何異常類型
5.使用except而帶多種類型
6.try-finally語句
7.異常傳遞
8.觸發(fā)異常
9.用戶自定義異常
五.模塊
1.定義:Python 模塊(Module)育苟,是一個(gè)Python文件较鼓,以.py 結(jié)尾,包含了Python 對象定義和Python語句
2.引入:import
3.from...import語句
4.from...import*語句
六.python中的包
定義:包是一個(gè)分層次的文件目錄結(jié)構(gòu)违柏,它定義了一個(gè)由模塊及子包博烂,和子包下的子包等組成的 Python 的應(yīng)用環(huán)境。簡單來說漱竖,包就是文件夾禽篱,但該文件夾下必須存在init.py 文件, 該文件的內(nèi)容可以為空。init.py 用于標(biāo)識當(dāng)前文件夾是一個(gè)包馍惹。
第十五單元 Python單元測試之unittest
一躺率、單元測試、集成測試讼积、功能測試
單元測試:顆粒度最小肥照,一般由開發(fā)小組采用白盒方式來測試,主要測試單元是否符合“設(shè)計(jì)”勤众;是指對軟件中的最小可測試單元進(jìn)行檢查和驗(yàn)證
集成測試:介于單元測試和系統(tǒng)測試之間舆绎,一般由開發(fā)小組采用白盒加黑盒的方法測試,即驗(yàn)證設(shè)計(jì)又驗(yàn)證需求们颜。主要用來測試模板與模板之間的接口吕朵,同時(shí)還要測試一些主要的業(yè)務(wù)功能。
功能測試:顆粒度最大窥突,一般由獨(dú)立的測試小組采用黑盒的方式來測試努溃,主要測試系統(tǒng)是否符合需求規(guī)格說明書。
一阻问、UnitTest組成
? ? ? ? (1)setUp():準(zhǔn)備環(huán)境梧税,執(zhí)行每個(gè)測試用例的前置條件;????
????????(2)tearDown():環(huán)境還原,執(zhí)行每個(gè)測試用例的后置條件第队;?
????????(3)setUpClass():必須使用@classmethod裝飾器哮塞,所有case執(zhí)行的前置條件,只運(yùn)行一次凳谦;
????????(4)tearDownClass():必須使用@classmethod裝飾器忆畅,所有case運(yùn)行完后只運(yùn)行一次;
1尸执、testFixture
? ? ? ? ? ? 作用:用于一個(gè)測試環(huán)境的準(zhǔn)備和銷毀還原
? ? 2家凯、testCase
? ? ? ? ? ? 定義:就是一個(gè)測試用例
3、testSuite
? ? ? ? ? ? ?測試套件如失,可以將多個(gè)測試用例集合在一起绊诲,能一起執(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的一個(gè)實(shí)例丐枉,是則測試用例通過。
? ? ? ? (12)assertNotIsInstance(a,b):斷言a是是b的一個(gè)實(shí)例掘托,不是則測試用例通過瘦锹。
三、生成測試報(bào)告
1、下載一個(gè)文件弯院,HTMLTestRunner.py,復(fù)制到項(xiàng)目中
? ? ?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報(bào)告)
? ? ? ? 2澎胡、類名和方法名必須是以test開頭
二、自動生成html測試報(bào)告
方式一
? ? ? ? ? ? 1娩鹉、pytest.main("模塊.py")【運(yùn)行指定模塊下攻谁,運(yùn)行所有test開頭的類和測試用例】
? ? ? ? ? ? 2、格式:pytest.main(["--html=./report.html","模塊.py"])
? ? ? ? 方式二
? ? ? ? ? ? 1弯予、運(yùn)行指定模塊指定類指定用例戚宦,冒號分割,并生成測試報(bào)告
? ? ? ? ? ? 2锈嫩、格式:pytest.main([‘--html=./report.html’,‘模塊.py::類::test_a_001'])
? ? ? 方式三
? ? ? ? ? ? 1受楼、Pytest調(diào)用語句
? ??????????-x:出現(xiàn)一條測試用例失敗就退出測試
????????????-v:豐富信息模式, 輸出更詳細(xì)的用例執(zhí)行信息
????????????-s:顯示print內(nèi)容
????????????-q:簡化結(jié)果信息,不會顯示每個(gè)用例的文件名
三呼寸、Pytest運(yùn)行方式
? ? ? ? ? ? 1艳汽、“.”點(diǎn)號,表示通過
? ? ? ? ? ? 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
? ? ? ? ? ? 概念:生成測試報(bào)告的框架? ? ? ? ? ??
? ? ? ? ? ? 1雏赦、先配置allure的環(huán)境變量
? ? ? ? ? ? 2劫笙、驗(yàn)證allure是否配置成功
? ? ? ? ? ? 3、其次要安裝allure:pip install allure-pytest
? ? ? ? ? ? 4星岗、allure常用的幾個(gè)特性
? ? ? ? ? ? ? ? ? ?(1) @allure.feature# 用于描述被測試產(chǎn)品需求
????????????????????(2)@allure.story# 用于描述feature的用戶場景填大,即測試需求
????????????????????(3)with allure.step():# 用于描述測試步驟,將會輸出到報(bào)告中
????????????????????(4)allure.attach# 用于向測試報(bào)告中輸入一些附加的信息俏橘,通常是一些測試數(shù)據(jù)允华,截圖等
第十七單元Requests
一、介紹
? ? ? ? ? ?1寥掐、Requests是一個(gè)很實(shí)用的Python HTTP客戶端庫靴寂,是Python語言的第三方的庫,專門用于發(fā)送HTTP請求召耘。
? ? ? ? ? ? 2百炬、下載:pip install requests
????????????3、get請求
? ? ? ? ? ? (1)get無參污它、get傳參
? ? ? ? ? ? (2)post請求
二剖踊、Requests響應(yīng)
? ??????????r.status_code? ? ? ? 響應(yīng)狀態(tài)碼
????????????r.heards? ? ? ? ? ?? 響應(yīng)頭
????????????r.cookies? ? ? ? ? ? 響應(yīng)cookies
????????????r.text? ? ? ? ? ? ?? 響應(yīng)文本
????????????r. encoding? ? ? ? ? 當(dāng)前編碼
????????????r. content? ? ? ? ? 以字節(jié)形式(二進(jìn)制)返回
三、Requests擴(kuò)充
? ??????????1.添加等待時(shí)間:requests.get(url,timeout=1)衫贬,如果超過等待時(shí)間則報(bào)錯
????????????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)通過斷言驗(yàn)證返回狀態(tài)碼和200對比
????????????????????????????(4)生成allure的測試報(bào)告
五、讀取csv文件
? ? ? ? 1缝呕、通過excel另存為csv即可
? ? ? ? 2、讀取數(shù)據(jù):readDemo
? ? ? ? 3斧散、request請求接口返回狀態(tài)碼
? ? ? ? 4供常、pytest斷言設(shè)置并結(jié)合allure生成測試報(bào)告
? ? ? ? 5、測試報(bào)告展示
六鸡捐、 讀取excle文件流程
? ? ? ? ? 1栈暇、存儲數(shù)據(jù)(xlsx)
? ??????????2、讀取數(shù)據(jù):readDemo????
? ??????????3箍镜、request請求接口返回狀態(tài)碼
? ??????????4源祈、pytest斷言設(shè)置并結(jié)合allure生成測試報(bào)告
? ???????????5、測試報(bào)告展示
第十八單元自動化持續(xù)集成
一色迂、概念
? ? ? ?1香缺、 就是一套標(biāo)準(zhǔn)的流程,最重要的組成部分就是持續(xù)集成(Continuous integration歇僧,簡稱CI)
? ? ? ? 2图张、持續(xù)集成:頻繁地將代碼集成到主干。
? ? ? ? 3、持續(xù)交付:指的是祸轮,頻繁地將軟件的新版本兽埃,交付給質(zhì)量團(tuán)隊(duì)評審。
? ? ? ? 4适袜、持續(xù)部署:是持續(xù)交付的下一步柄错,評審?fù)ㄟ^后,自動部署到生成環(huán)境苦酱。
二鄙陡、Jenkins
? ? ? ? ? ? 1、概念:Jenkins 是一個(gè)開源軟件項(xiàng)目躏啰,是基于Java開發(fā)的一種可拓展持續(xù)集成工具趁矾,主要用于持續(xù)、自動地構(gòu)建 / 測試 / 集成軟件項(xiàng)目以及監(jiān)控一些定時(shí)執(zhí)行的任務(wù)给僵。
? ? ? ? ? ? 2毫捣、目的:(1)持續(xù)、自動地構(gòu)建/測試軟件項(xiàng)目帝际。
????????????????????????????(2)監(jiān)控軟件開放流程蔓同,快速問題定位及處理,提示開放效率蹲诀。
? ? ? ? ? ? 3斑粱、特性:易于安裝、易于配置脯爪、通過 RSS 發(fā)布構(gòu)建結(jié)果或當(dāng)構(gòu)建完成時(shí)通過 e-mail 通知则北、生成 JUnit / TestNG 測試報(bào)告、分布式構(gòu)建痕慢、插件支持尚揣,支持?jǐn)U展插件
? ? ? ? ? ? 4、產(chǎn)品發(fā)布流程:產(chǎn)品設(shè)計(jì)成型 → 開發(fā)人員開發(fā)代碼 → 測試人員測試功能 → 運(yùn)維人員發(fā)布上線
三掖举、安裝Jenkins.war包
? ? ? ? ? ? ? ? (1)啟動方式:在tomcat的bin目錄下啟動(最常用)
? ? ? ? ? ? ? ? ? (2)方式2:打開cmd快骗,進(jìn)入jenkins目錄,然后運(yùn)行命令:java -jar jenkins.war
四塔次、搭建Jmeter+jenkins+ant持續(xù)化
? ? ? ? ? ? ? ? ? ?(1) Ant下載及配置安裝
????????????????????下載Apache-ant
????????????????????解壓到你想要安裝的目錄
????????????????????配置環(huán)境變量
????????????????????驗(yàn)證是否安裝成功
????????????????????拷貝Jemter包到ant下
????????????????????新建一個(gè)build.xml文件
? ? ? ? ? ? ? ? ? ? (2)進(jìn)行命令行模式后方篮,進(jìn)入剛才創(chuàng)建的xml文件存放目錄,如:D:\build 輸入ant即可
五励负、集成jenkins
? ??????????????????打開Jenkins藕溅,配置Ant環(huán)境
????????????????????新建一個(gè)自由風(fēng)格任務(wù)
????????????????????構(gòu)建觸發(fā)器
????????????????????構(gòu)建配置
????????????????????配置HTML插件
????????????????????立即構(gòu)建
????????????????????針對報(bào)告中不顯示聚合報(bào)告的情況
????????????????????Jenkins執(zhí)行自動化測試后發(fā)送測試報(bào)告郵件
第十九單元自動化
一、自動化測試的好處
? ? ? ? ? ????1熄守、? 縮短測試周期:計(jì)算機(jī)行業(yè)更新迭代快速蜈垮,大量頻繁的回歸測試消耗時(shí)間耗跛,自動化測試能夠?qū)⒅貜?fù)的實(shí)行交給計(jì)算機(jī)去做,加快測試速度攒发。
????????????2调塌、避免人為出錯:測試人員不可能持續(xù)高度集中,并且人類易受外界影響(頭疼腦熱惠猿,精神不振)羔砾,可能會造成人為錯誤
????????????3、測試信息存儲:自動化測試將測試信息和數(shù)據(jù)儲存在文件中偶妖,思路清晰明確姜凄,交接方便
????????????4、輕易獲取覆蓋率:自動化測試能夠解放測試人員趾访,使測試人員能夠有更多的精力做那些非重復(fù)性的工作态秧。
????????????5、其他:自動化測試可以是實(shí)現(xiàn)自動或者定時(shí)執(zhí)行
注意:自動化測試的方向是對的扼鞋,而且趨勢也是如此申鱼,但是有些自動化實(shí)現(xiàn)不了的還是會手動測試的。
二云头、自動化分類
? ? ? ? ? ? ? ?1捐友、 整體分類
? ? ? ? ? ? ? ? ? ? (1)自動化功能測試
????????????????????(2)自動化性能測試
????????????????2、自動化功能測試的分類:
????????????????????(1)單元測試:程序員搞定
????????????????????(2)功能測試
????????????????????(3)接口測試:大中型項(xiàng)目或長期項(xiàng)目可以采用自動化測試
? ? ? ? ? ? ? ? ? ? 3溃槐、性能測試主要是使用測試工具
? ? ? ? ? ? ? ? ? ? ? (1)Loadrunner匣砖、Jmeter等,對軟件進(jìn)行壓力測試昏滴、負(fù)載測試等等猴鲫,因?yàn)檫@些無法用手工進(jìn)行代替,所以必須自動化影涉。
三变隔、web自動化條件的使用和范圍
? ? ? ? ? ? ? ? ? ? 1、前提條件
? ? ? ? ? ? ? ? ? ? ? ? ? ?(1)手動測試已經(jīng)完成,后期再不影響進(jìn)度的前提下逐漸實(shí)現(xiàn)自動化
? ? ? ? ? ? ? ? ? ? ? ? ? ?( 2)項(xiàng)目周期長蟹倾,重復(fù)性的工作都交給機(jī)器去實(shí)現(xiàn)
? ? ? ? ? ? ? ? ? ? ? ? ? ?( 3)需求穩(wěn)定,項(xiàng)目變動不大
? ? ? ? ? ? ? ? ? ? ? ? ? ? (4)自動化測試腳本復(fù)雜度比較低
? ? ? ? ? ? ? ? ? ? ? ? ? ?( 5)可重復(fù)利用
? ? ? ? ? ? ? ? ? ? 2、使用自動化測試的場景
? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)頻繁的回歸測試
? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)冒煙測試
? ? ? ? ? ? ? ? ? ? ? ? ? ? (3)傳統(tǒng)行業(yè)需求變化不大猖闪,應(yīng)用頻繁
? ? ? ? ? ? ? ? ? ? ? ? ? ? (4)性能測試
四鲜棠、web自動化常用的工具
? ? ? ? ? ? 1、QTP(收費(fèi))
? ? ? ? ? ? 2培慌、Selenium(開源)
? ? ? ? ? ? 3豁陆、RFT(收費(fèi))
? ? ? ? ? ? 4、(1)元素定位工具:css選擇器吵护、xpath
? ? ? ? ? ? ? ? ? ? (2)環(huán)境工具:(1)firefox35
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(2)firebug插件
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(3)firepath插件
? ? ? ? ? ? 5盒音、什么是xpath:XPath即為XML路徑語言表鳍,它是一種用來(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)在 HTML\XML 文檔中查找信息的語言。
? ? ? ? ? ? 6祥诽、什么是xml:XML 指可擴(kuò)展標(biāo)記語言(EXtensible Markup Language)XML 是一種標(biāo)記語言譬圣,很類似 HTMLXML 的設(shè)計(jì)宗旨是傳輸數(shù)據(jù),而非顯示數(shù)據(jù)
? ? ? ? ? ? 7雄坪、(1)xml是設(shè)計(jì)為傳輸和存儲數(shù)據(jù)的厘熟。
? ? ? ? ? ? ? ? (2)html是顯示數(shù)據(jù)以及更好的顯示數(shù)據(jù)
? ? ? ? ? ? 8、獲取元素
? ? ? ? ? ? ? ? (1)nodename:選取此節(jié)點(diǎn)的所有子節(jié)點(diǎn)
? ? ? ? ? ? ? ? (2)/從根節(jié)點(diǎn)選取
? ? ? ? ? ? ? ? (3)//從匹配選擇當(dāng)前節(jié)點(diǎn)選擇文檔的節(jié)點(diǎn)维哈,不考慮位置
? ? ? ? ? ? ? ? (4)“.”選取當(dāng)前節(jié)點(diǎn)
? ? ? ? ? ? ? ? ? (5)“..”選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)
? ? ? ? ? ? ? ? (6)@選取屬性