日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python测试之道pdf百度云_Python测试之道——笔记1

發(fā)布時間:2023/12/4 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python测试之道pdf百度云_Python测试之道——笔记1 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

引言

如果利用python做自動化測試的話,一些python相關的基礎知識是必須要掌握的。常用的比如:python代碼規(guī)范、變量與數(shù)據(jù)類型、運算、函數(shù)和字符串處理等。

語法規(guī)范

這里只介紹重點和常用的一些注意事項。

在使用python編碼的時候,我們應該嚴格按照pep8的規(guī)范來要求自己,這樣不僅僅提高代碼的可讀性,同時也提高了自己編碼的整體水平。

重點關注:

1. python不像java一樣,代碼以分號結束,python一條命令一行代碼,沒有分號。

2.每行的長度不超過80個字符。這里是除導入較長的模塊和注釋里的內(nèi)容。

3.python的隱式連接是使用()、[]和{}。 切記不要使用反斜杠來連接行。

不推薦這種:

a = "這是一個超長的字符串" \

"這是一個很長的字符串"

print(a)

我們使用這種:

b = ("這是一個超長的字符串"

"這是一個很長的字符串")

print(b)

4.使用4個空格作為縮進代碼,不要使用tab鍵。

5.類與方法之間需要空一行,定級定義之間空兩行,其他保持一行就可以了。

6.括號內(nèi)不要有空格。

7.如果一個類不繼承其他的類,就顯示的從object繼承,嵌套也一樣。

推薦使用:

class TestClass01(object):

pass

不要使用這種:

class TestClass01:

pass

8.字符串合并使用+,不要使用%s%s,字符串打印使用format格式化,不要使用+

如:

# 推薦

a = "a" + "b"

b = "{},{}".format(1,2)

c = "key1: %s, key2: %d"%("aa",2)

d = "key1: {}, key2: {}".format("python",1)

print(a)

print(b)

print(c)

print(d)

# 不推薦

a = "%s%s" % ("a","b")

b = "{}{}".format(1,2)

c = "key1: aa" + ", " + "key2: 2"

d = "key1: " + "python" + ", " + "key2: " + str(1)

print(a)

print(b)

print(c)

print(d)

執(zhí)行結果:

ab

1,2

key1: aa, key2: 2

key1: python, key2: 1

ab

12

key1: aa, key2: 2

key1: python, key2: 1

Process finished with exit code 0

9.導入的格式,每個導入應該單獨占一行,

# 推薦

import os

import sys

# 不推薦

import os,sys

10.?塊注釋和行注釋,使用#號來注釋。

語法規(guī)范總結:

規(guī)范有很多,平時使用注意以下幾點就行:

1、換行和縮進

2、模塊導入

3、注釋

更多了解,可以參考官方文檔:https://www.python.org/dev/peps/pep-0008/

變量與變量類型

變量定義:大家知道程序是用來處理數(shù)據(jù)的,而變量是用來存儲數(shù)據(jù)的。python中變量不需要聲明類型,可以存儲任何值,每個變量在內(nèi)存中被創(chuàng)建,

變量賦值以后該變量才會被創(chuàng)建。基于變量的數(shù)據(jù)類型,解釋器會分配指定內(nèi)存,并決定什么數(shù)據(jù)可以被存儲在內(nèi)存中。

等號(=)用來給變量賦值。

python五種標準的數(shù)據(jù)類型:

1、Numbers(數(shù)字)

2、String(字符串)

3、List(列表)

4、Tuple(元組)

5、Dictionary(字典)

6、Set(集合)

Python3 的六個標準數(shù)據(jù)類型中:

不可變數(shù)據(jù)(3 個):Number(數(shù)字)、String(字符串)、Tuple(元組);

可變數(shù)據(jù)(3 個):List(列表)、Dictionary(字典)、Set(集合)。

Python 數(shù)字

當指定一個值(數(shù)字),數(shù)字對象就被創(chuàng)建:

var = 1

print(var)

python有四種不同的數(shù)字類型:

int(有符號整型)

long(長整型[也可以代表八進制和十六進制])

float(浮點型)

complex(復數(shù))

Python字符串

字符串轉換

# 字符轉換

str(x) # x為任意數(shù)據(jù)類型

# 字符串合并

a = 123

b = "123"

print(str(a) + b)

# 字符串截取

a = "a=abc,b=123,abcd,(1,2,3)"

print(a.split(','))

print(a.split(',', 2))

print(a.split(',')[1].split('=')[1])

#字符串替換

a = "a=abc,b=123,abcd,(1,2,3)"

print(a.replace(',', ':'))

print(a.replace(',', ':', 2))

print(a.replace(',', ':', 3))

b = a.replace(',', ':', 3)

print(b)

Python 列表

List(列表)是python中使用最頻繁的數(shù)據(jù)類型

列表可以完成大多數(shù)集合類的數(shù)據(jù)結構實現(xiàn),它支持字符,數(shù)字,字符串甚至可以包含列表(即嵌套)。

列表用?[ ]?標識,是 python 最通用的復合數(shù)據(jù)類型。列表中值的切割也可以用到變量?[頭下標:尾下標]

一個完整的切片表達式包含兩個“:”,用于分隔三個參數(shù)(start_index、end_index、step)。當只有一個“:”時,默認第三個參數(shù)step=1;當一個“:”也沒有時,start_index=end_index,表示切取start_index指定的那個元素。

切片操作基本表達式:object[start_index:end_index:step]

step:正負數(shù)均可,其絕對值大小決定了切取數(shù)據(jù)時的‘‘步長”,而正負號決定了“切取方向”,正表示“從左往右”取值,負表示“從右往左”取值。當step省略時,默認為1,即從左往右以步長1取值。“切取方向非常重要!”“切取方向非常重要!”“切取方向非常重要!”,重要的事情說三遍!

start_index:表示起始索引(包含該索引對應值);該參數(shù)省略時,表示從對象“端點”開始取值,至于是從“起點”還是從“終點”開始,則由step參數(shù)的正負決定,step為正從“起點”開始,為負從“終點”開始。

end_index:表示終止索引(不包含該索引對應值);該參數(shù)省略時,表示一直取到數(shù)據(jù)“端點”,至于是到“起點”還是到“終點”,同樣由step參數(shù)的正負決定,step為正時直到“終點”,為負時直到“起點”

"""列表"""

a = [1,2,"python",(3,"aa")]

# 刪除

a.remove("python")

print(a)

# 新增

a.append(4)

print(a)

a.insert(1,"java")

print(a)

# 修改

a[2] = "python"

print(a)

# 合并

b = [5,6,7]

a.extend(b)

print(a)

b = b + a

print(b)

Python 元組

元組不可修改,使用小括號()存儲數(shù)據(jù),元素之間使用逗號分隔。

a = (1, "a", (3, "python"))

print(a[0])

print(a[1])

print(a[2])

print(a[-1])

print(a[2][-1])

print(a[-1][0])

print(a[1:-1])

Python 字典

列表是有序集合,而字典是無序集合。兩者區(qū)別,字典表現(xiàn)形式是{},并且通過鍵來存取的,而列表是通過偏移存取。

字典是一種映射類型,字典用?{ }?標識,它是一個無序的?鍵(key) : 值(value)?的集合。鍵(key)必須使用不可變類型。

在同一個字典中,鍵(key)必須是唯一的。

"""字典"""

a = {'a':1,'b':2,'c':3}

print(a)

# 刪除

del(a['a'])

print(a)

b = {'a':4,'d':5}

# 更新

a.update(b)

print(a)

Python 集合

使用大括號?{ }?或者?set()?函數(shù)創(chuàng)建集合,注意:創(chuàng)建一個空集合必須用set()?而不是?{ },因為?{ }?是用來創(chuàng)建一個空字典。

# 集合

test = {1,2,3,"python","java","python"}

# 輸出元素,重復的自動去掉

print(test)

# 增加元素

test.add("php")

print(test)

# 增加多個

test.update([4,5,6])

print(test)

# 刪除元素

test.remove(6)

print(test)

a = set('abc')

b = set('abcde')

print(a)

print(a - b) # 差集

print(b - a)

print(a | b) # 并集

print(a & b) # 交集

print(a ^ b) # a與b不同時存在的元素

# 成員關系判斷

member = {"python","php","java","c#"}

if "python" in member:

print("python在集合中")

else:

print("不在集合中")

運算符

自動化測試中,經(jīng)常使用運算符,對數(shù)據(jù)進行處理。

python中運算符主要有:

1、算術運算符

2、比較(關系)運算符

3、賦值運算符

4、邏輯運算符

5、位運算符

6、成員運算符

7、身份運算符

經(jīng)常使用的是賦值、算術,比較這三種,當然在斷言的時候,會使用成員運算符。判斷兩個變量是否是相同的標識(id),可以使用身份運算符。

當然,條件判斷的時候,還會使用邏輯運算符。

# and和or 左右兩邊不一定是布爾類型,有可能是表達式,and左邊為真時,才會去算右邊的值,or左邊為真時,就不會去算右邊的值,not右邊值為假才會返回真。

# 0為False , 1為True

a = 1

b = 2

c = 0

print(a and b)

print(a or b)

print(not a)

print(bool(a))

print(a and c)

print(bool(c))

print(c or b)

print(a and b and c)

if a > 0 and b:

print(a)

字符串

python使用時,字符串是非常頻繁的一個數(shù)據(jù)類型。

創(chuàng)建方式:使用''或"",即可。

訪問方式:通過[]來截取。

# 字符串合并

a = 123

b = "123"

print(str(a) + b)

# 字符串截取

a = "a=abc,b=123,abcd,(1,2,3)"

print(a.split(','))

print(a.split(',', 2))

print(a.split(',')[1].split('=')[1])

# 字符串替換

a = "a=abc,b=123,abcd,(1,2,3)"

print(a.replace(',', ':'))

print(a.replace(',', ':', 2))

print(a.replace(',', ':', 3))

b = a.replace(',', ':', 3)

print(b)

# 訪問

a = "adfa_2323"

print(a[:-2])

在需要在字符中使用特殊字符時,python 用反斜杠?\?轉義字符,使用最頻繁的是:

# 續(xù)行符

print("test \

test")

# 反斜杠

print("\\")

# 換行

print("test\ntest")

# 響鈴

print("\a")

# 單引號

print('\'')

# 雙引號

print("\"")

字符串前面使用r,是顯示原始字符串,不是轉義

字符串前面使用u,一般是中文使用u,進行unicode編碼時,防止中文亂碼。

字符串前面使用b,是bytes字節(jié)串類型。

a = u"中國"

print(a)

b = r"fadfa\\"

print(b)

c = bytes("中國",encoding='utf8')

print(c)

d = c.decode()

print(d)

輸出結果:

中國

fadfa\\

b'\xe4\xb8\xad\xe5\x9b\xbd'

中國

在Python3中,所有的字符串都是Unicode字符串(16位)。

函數(shù)

1、函數(shù)的定義:什么是函數(shù)呢?

其實函數(shù)就是一段代碼的集合,里面是有很多方法和內(nèi)容,可以重復調用的。主要是內(nèi)置函數(shù)和自定義函數(shù)。

平時我們使用print,其實就是python的內(nèi)置函數(shù)。

python主要的內(nèi)置函數(shù)如下:

2、函數(shù)的返回值。

這主要是我們自己定義的函數(shù),如:

#!/usr/bin/python3

# 可寫函數(shù)說明

def sum( arg1, arg2 ):

# 返回2個參數(shù)的和."

total = arg1 + arg2

print ("函數(shù)內(nèi) : ", total)

return total

# 調用sum函數(shù)

total = sum( 10, 20 )

print ("函數(shù)外 : ", total)

3、函數(shù)的參數(shù)。

主要分為四種:位置參數(shù),默認參數(shù),不定長參數(shù)(可變和關鍵字參數(shù))

位置參數(shù):

調用函數(shù)時,傳入實參的值按照位置順序以此賦給形參。下面這個函數(shù)中的x和n就是位置參數(shù)。

def power(x, n):

s = 1

while( n ):

n = n - 1

s = s * x

return s

默認參數(shù):

python的函數(shù)同時還允許你給函數(shù)的參數(shù)設置默認值,當調用者沒有給出參數(shù)的值時自動使用默認值。設置默認參數(shù)時要注意,必選參數(shù)必須在默認參數(shù)之前。

def power(x, n = 2):

s = 1

while( n ):

n = n - 1

s = s * x

return s

注意:默認參數(shù)必須指向不可變對象,否則會發(fā)生不可預知的錯誤。

可變參數(shù):

在Python函數(shù)中還可以定義可變的參數(shù),參數(shù)的個數(shù)可以是任意個,定義參數(shù)時,只需要在參數(shù)的前面加一個 * 符號即可。

def N(×num):

s = 1

for n in num:

s = s * n

return s

A = N(1,2,3,4,5,6,7,8,9,10) #A = 3628800

關鍵字參數(shù)(keyword argument):

python的關鍵字參數(shù)允許你傳入任意個含參數(shù)名的參數(shù),這些關鍵字參數(shù)在函數(shù)內(nèi)部自動組裝為一個dict。傳入關鍵字參數(shù)的時候必須指定參數(shù)的名稱(參數(shù)名由調用者自行取定),否則該參數(shù)會被認為是位置參數(shù)從而報錯。

def keyword_params(**kwargs):

return kwargs

keyword_params(key1="values1",key2="values2")

可變和關鍵字參數(shù)混搭:

def test_fuc(*args,**kwargs):

print(args,111)

print(kwargs,222)

test_fuc(1,2,3,key1="values")

注意事項:

*args與**kwargs的區(qū)別,兩者都是python中的可變參數(shù)。

*args表示任何多個無名參數(shù),它本質是一個tuple;

**kwargs表示關鍵字參數(shù),它本質上是一個dict;

如果同時使用*args和**kwargs時,必須*args參數(shù)列要在**kwargs前。

在這個場景下使用這兩個關鍵字。其實并不是必須寫成*args 和**kwargs。??*(星號)才是必須的. 你也可以寫成*ar 和**k. 而寫成*args 和**kwargs只是一個通俗的命名約定。

關鍵字和位置參數(shù)混搭:

def person(name, age, **kw):

print('name:', name, 'age:', age, 'other:', kw)

preson("J",33,city = "Beaijing",job = "Engineer")

4、函數(shù)嵌套

在函數(shù)中再定義一個函數(shù),就叫做嵌套函數(shù)。嵌套函數(shù)可以訪問包圍范圍內(nèi)的變量。

如圖:

def add_test(a,b):

c = a + b

def ride_test(x):

x = x*x

print(c)

return x

return ride_test(c)

print(add_test(1, 2))

這里嵌套會涉及一個閉包概念,閉包就是把內(nèi)部函數(shù)作為一個變量來使用。

我們可以將閉包理解為一種特殊的函數(shù),這種函數(shù)由兩個函數(shù)的嵌套組成,且稱之為外函數(shù)和內(nèi)函數(shù),外函數(shù)返回值是內(nèi)函數(shù)的引用,此時就構成了閉包。

格式如下:

def 外層函數(shù)(參數(shù)):

def 內(nèi)層函數(shù)():

print("內(nèi)層函數(shù)執(zhí)行", 參數(shù))

return 內(nèi)層函數(shù)

內(nèi)層函數(shù)的引用 = 外層函數(shù)("傳入?yún)?shù)")

內(nèi)層函數(shù)的引用()

簡單的一個閉包案例:

def outter(x):

def inner(y):

return x + y

return inner

test = outter(2)

print(test(3))

閉包也叫工廠函數(shù),它的作用如下:

a:記憶外層作用域中的值;

b:可以保護變量不被修改;

c:可以讓一個變量常駐內(nèi)存;

內(nèi)函數(shù)中修改外函數(shù)的值:

def outter(x):

a = 100

def inner(y):

nonlocal a

a = 200

return x + y + a

return inner

test = outter(2)

print(test(3))

這個結果是205,而不是105。

一般在函數(shù)結束時,會釋放臨時變量,但在閉包中,由于外函數(shù)的臨時變量在內(nèi)函數(shù)中用到,此時外函數(shù)會把臨時變量與內(nèi)函數(shù)綁定到一起,這樣雖然外函數(shù)結束了,但調用內(nèi)函數(shù)時依舊能夠使用臨時變量,即閉包外層的參數(shù)可以在內(nèi)存中進行保留

如果想要在內(nèi)函數(shù)中修改外函數(shù)的值,需要使用 nonlocal 關鍵字聲明變量。

在看一個典型的裝飾器原型:

import time

def showtime(func):

def wrapper(x):

s_time = time.time()

func()

e_time = time.time()

print('speed is {}'.format(e_time - s_time))

return x

return wrapper

def wait():

print('waiting...')

time.sleep(3)

foo = showtime(wait)

print(foo(3))

運行結果:

waiting...

speed is 3.000234603881836

3

總結

有興趣加入測試交流群,歡迎測開愛好者加入我們~

總結

以上是生活随笔為你收集整理的python测试之道pdf百度云_Python测试之道——笔记1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。