今天做公司项目的接口测试,发现有些接口地址在post的时请求的json中除了登录时的token外还需要传入nonce和sign两个不知道什么的参数,后来经过和开发沟通后了解到这是随机生成的32位字符串后再进行md5加密后的结果,所以现在自己打算来随机生成32位字符串,然后再进行md5加密:
首先要生成32位字符串,方法如下:
import string
import random
#一个空字符串,然后join随机的32位字符串
#x = string.ascii_letters
#print('x:',x)
#将0-9赋值
#y = string.digits
#print('y:',y)
#z = x+y
#print('z:',z) 结果是:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
n = ''.join(random.sample(string.ascii_letters+string.digits,32))
print(n) #结果是:WIxj4L605dowP9t3g7fbSircqpTOZ2VK
#然后再将n进行md5加密
import hashlib
m = hashlib.md5() #创建Md5对象
m.update(n.encode('utf-8')) #生成加密串,其中n是要加密的字符串
result = m.hexdigest() #经过md5加密的字符串赋值
print('结果是:',result) #输出:47cb31ad09b0fe5d75688e26ad7fd000
下面补充几个random中常用的方法吧:
下面将对random中的常见函数进行讲解:
(1)、random():无参数,随机生成浮点数,区间为(0,1]
示例:print(random.random())
输出:0.8959623450106021
(2)、randint(start,stop):两个参数,随机生成[start,stop]区间内的整数
示例:print(random.randint(1,3))
输出:1
(3)、randrange(start,stop,step):返回指定递增基数集合中的一个随机数
示例:print(random.randrange(100,1000,2))
输出:694
(4)、uniform(start,stop):填补random()的缺陷,可以设置两个参数,下限和上限
示例:print(random.uniform(1,2))
输出:1.7134851989113074
(5)、choice(series):从序列中返回一个任意的元素,可以用于series为字符串、列表、元组
示例:print(random.choice([1,2,3,4,5,6]))
输出:4
(6)、shuffle(series):将序列的所有元素打乱
示例:list=[1,2,3,4,5]
print(list)
random.shuffle(list)
print(list)
输出:[1, 2, 3, 4, 5]
[2, 1, 3, 4, 5]
(7)、sample(series,num):两个参数,从序列中返回任意num个元素
示例:list1=[2,3,4,5,6,7,8]
print(random..sample(list1,5))
输出:[6, 4, 5, 2, 8]
关于random模块,大家常见的函数大概就是以上几个,如有不足,欢迎提出补充,谢谢!