測試開發之Python核心筆記(3) 數值與隨機數

2021-10-08 21:34:24 字數 4497 閱讀 4206

python支援的數值型別有整型int、布林型bool、浮點型float、decimal。

type

(100)#

type

(1.0)#

type

(true)#

type

(false

)#

這裡要提一下,布林型是只有兩個值的整數。true對應1,false對應0。對於布林型要從以下方面理解:

>>

>5+

27>>

>5-

32>>

>5*

210>>

>5/

22.5

>>

>5%

21>>

>5**

225>>

>

pow(5,

2)25>>

>

divmod(5

,2)(

2,1)

>>

>

round

(1.314,2

)# 保留兩位小數,第三位四捨五入

1.31

>>

>

round

(2.5

)# 值剛好等於兩個整數中間時,得到舉例最近的偶數

2>>

>

round

(1.5

)# 值剛好等於兩個整數中間時,得到舉例最近的偶數

2>>

>

round

(2.6)3

>>

>

abs(

-0.5

)0.5

將數值轉成二進位制後,按位操作。

>>

>30&

4512

>>

>30|

4563

>>

>30^

4551

>>

>~30

-31>>

>

3<<212

>>

>

8>>

2

>>

>

bin(10)

# '0b1010'

>>

>

oct(9)

# '0o11'

>>

>

hex(15)

# '0xf'

>>

>

5>

3# true

>>

>

5<

3# false

>>

>5==

3# false

>>

>

5>=

3# true

>>

>5!=

3# true

>>

>

5<=

3# false

普通的float型資料在運算時,是有誤差的,python預設的是17位小數的精度,再長後面的資料就不准了。如果不能接受誤差,可以使用decimal模組解決精確計算問題。

a =

3b =

1c = b/a

print

(c)# 0.3333333333333333

d ="%.30f"%(

1/3)

print

(d)# 0.333333333333333314829616256247

e = decimal(1)

/decimal(3)

print

(e)# 0.3333333333333333333333333333 ,預設28位,可調

這個模組很常用。

import random

import string

print

(random.randint(1,

10))# 產生 1 到 10 的乙個整數型隨機數

print

(random.random())

# 產生 0 到 1 之間的隨機浮點數

print

(random.uniform(

1.1,

5.4)

)# 產生 1.1 到 5.4 之間的隨機浮點數,區間可以不是整數

print

(random.choice(

'tomorrow'))

# 從序列中隨機選取乙個元素

print

(random.choice(

['剪刀'

,'石頭'

,'布'])

)print

(random.randrange(1,

100,2)

)# 生成從1到100的間隔為2的隨機整數

print

(random.sample(

'zyxwvutsrqponmlkjihgfedcba',5

))# 生成5個字元組成的列表

print(''

.join(random.sample(string.ascii_letters + string.digits,8)

))# 從a-za-z0-9生成指定數量的隨機字元

a =[1,

3,5,

6,7]

random.shuffle(a)

# 將序列a中的元素順序打亂

print

(a)

說到隨機數作為測試資料,python中還有乙個非常好用的產生隨機數的第三方包faker(安裝方法是:

pip install faker
它的功能特別強大,能夠產生的隨機數型別非常豐富,舉幾個例子:

from faker import faker

# faker.seed(4321) # 隨機數種子

fake=faker(

'zh_cn'

)print

(fake.name())

print

(fake.address())

print

(fake.city())

print

(fake.postcode())

print

(fake.company())

print

(fake.email())

print

(fake.hostname())

print

(fake.ipv4(

))

從名字可以看出產生的隨機數的型別。

如果想要每次生成的隨機數是固定的。可以提供乙個隨機數種子,這樣相同的方法,總會得到相同的隨機結果。

在使用pytest測試框架的測試工作中,可以將faker製作成為fixture函式。例如下面的**,在conftest.py檔案中定義乙個叫作faker的fixture函式,其中指定了locale是中國。

from faker import factory

@pytest.fixture(scope=

'session'

)def

faker()

:return factory.create(

'zh_cn'

)

測試函式中,就可以直接使用faker,在使用過程中,使用相同seed的faker,產生的隨機數是一樣的,比如下面的test_faker和test_something這兩個測試函式中,相同方法產生的隨機數是一樣的。

def

test_faker

(faker)

: faker.seed(

1234

)print

(faker.name(

), faker.address(

), faker.email())

assert

isinstance

(faker.name(),

str)

deftest_something

(faker)

: faker.seed(

1234

)print

(faker.name(

), faker.address(

), faker.email())

assert

isinstance

(faker.name(),

str)

deftest_something_else

(faker)

:print

(faker.name(

), faker.address(

), faker.email())

assert

isinstance

(faker.name(),

str)

測試開發之Python核心筆記(9) 時間與日期

在 python 文件裡,time是歸類在generic operating system services中,換句話說,它提供的功能是更加接近於作業系統層面的。time 模組是圍繞著 unix timestamp 進行的。五個常用函式 timestamp time.time 1590465647....

python測試開發學習筆記

練習題1 請大家找出s aabbccdd xffff 中,字母出現次數最多的字母 遍歷所有的字元,把每乙個字元出現的次數,用count函式做乙個統計,宣告乙個儲存最大值的字典物件,遍歷的時候動態判斷當前字元出現的字元數字是否比字典中的最大值更大 如果等於則也存進去 如果小於則忽略,如果大於則把字典中...

測試開發之測試基礎

一 測試的定義 通過人工或自動的手段,對被測物件進行檢測的活動。目的在於發現被測物件是否實現使用者的需求,或者弄清楚實際結果和預期結果之間的差異。二 測試的目的 三 測試的七大原則 四 測試的物件 測試物件包括軟體源 與軟體源 匹配的文件和支撐軟體源 執行的配置資料。測試物件 按照時間可分為 五 測...