robotframework环境搭建二十九:自动生成银行账户并校验Luhm码
问题:自动生成银行账户
一、根据不同银行生成不同账户
1. 思路
- 自动生成银行账户
- 校验Luhm码
2. 关键字:Card No Generator
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1f9ef195e82e0941ac10c9901d4693fa.png)
二、pyhon 源代码
import time
import random
def card_No_generator(bankType=None):
switch = {
"CCB": "621700",
"CMBC": "621691",
"ABC": "622827",
"BCM": "622262",
"CMB": "621486",
"SPDB": "622521",
"GDB": "622568",
"HXB": "622632",
"PAB": "622298",
"CITIC": "622696",
"ICBC": "620058",
"BOC": "620061",
"CIB": "622908",
"CEB": "622660",
"PSBC": "621799"}
cardNo = ''
for i in range(200):
length = 0
s=[]
if bankType == None:
bankType = random.choice(switch.keys())
if(bankType == 'ICBC' or bankType == 'CCB' or bankType == 'ABC' or bankType == 'PSBC' or bankType == 'GDB' or bankType == 'BOC' or bankType == 'BCM'):
length = 13
else:
length = 10
for i in range(length):
s.append(str(random.randint(0,9)))
cardNo = switch[bankType] + ''.join(s)
if luhm_check(cardNo):
print('Card NO: ' + cardNo)
return bankType, cardNo
def luhm_check(cardNo):
lastNum = int(cardNo[-1])
oddNums = map(lambda x: int(x)*2, cardNo[1::2])
evenNums = map(lambda x: int(x)*1, cardNo[2::2])
sumTotal = sum(oddNums + evenNums)
check= lambda x: 10 if x%10==0 else x%10
k = check(sumTotal)
luhm= 10-k
if lastNum == luhm:
return True
else:
return False
if __name__ == '__main__':
card_No_generator()