“ 本文掌握Python中的几种数值类型,以及算术运算、位运算、数值转换,再学习一个测试中常用来产生随机数的模块。”
构建测试知识体系,欢迎关注
Python支持的数值类型有整型int、布尔型bool、浮点型float、Decimal。
type(100) # <class 'int'>type(1.0) # <class 'float'>type(True) # <class 'bool'>type(False) # <class 'bool'>
这里要提一下,布尔型是只有两个值的整数。True对应1,False对应0。对于布尔型要从以下方面理解:
有两个值True和False
对于值为零的任何数字或者空集(空列表[]、空元组()、空集合{}、空字典{}),他们的布尔值都是False
01
—
算术运算
加法+
减法-
乘法*
除法/
取余%
幂运算**或pow
取商和余数divmod
四舍五入round
绝对值abs
>>> 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
02
—
位运算
将数值转成二进制后,按位操作。
按位取反~
按位与&
按位或|
按位异或^
左移<<
右移>>
>>> 30 & 4512>>> 30 | 4563>>> 30 ^ 4551>>> ~30-31>>> 3<<212>>> 8>>2
03
—
数制转换
bin(),将十进制转换为二进制
oct(),将十进制转换为八进制
hex(),将十进制转换为十六进制
>>> bin(10) # '0b1010'>>> oct(9) # '0o11'>>> hex(15) # '0xf'
04
—
比较运算
大于>
小于<
等于==
大于等于>=
小于等于<=
不等于!=
>>> 5>3 # True>>> 5<3 # False>>> 5==3 # False>>> 5>=3 # True>>> 5!=3 # True>>> 5<=3 # False
05
—
decimal模块
普通的float型数据在运算时,是有误差的,python默认的是17位小数的精度,再长后面的数据就不准了。如果不能接受误差,可以使用decimal模块解决精确计算问题。
a = 3b = 1c = b/aprint(c) # 0.3333333333333333d = "%.30f" % (1/3)print(d) # 0.333333333333333314829616256247e = Decimal(1)/Decimal(3)print(e) # 0.3333333333333333333333333333 ,默认28位,可调
06
—
random模块
在测试工作中,构造随机数类型的测试数据时,经常用使用random这个模块。它能够产生随机整数、小数,还能随即从列表和元组或者字符串中提取随机元素。
import randomimport stringprint(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(https://pypi.org/project/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())
从名字可以看出产生的随机数的类型。
如果想要每次生成的随机数是固定的。可以提供一个随机数种子,这样相同的方法,总会得到相同的随机结果。