【Web_接口测试_Python3_自动化生成四要素】姓名/身份证/银行卡/手机号,接口测试准备工作之四要素生成,自动化测试案例

#coding:utf-8
import random, datetime, time
from datetime import date
from datetime import timedelta

class Auth():
    # 数字转换为大写
    def generate_number_name(self, change_num="0001"):
        '''
        @param change_num: 传入数字"0001",自动填充为4位
        @return: 返回中文"零零零一"
        '''
        change_num = f"{change_num:0>4}"
        old_list, new_list = list(change_num), []
        str_num, str_chinese = "0123456789", "零一二三四五六七八九"
        for i in old_list:
            new_list.append(str_chinese[eval(i)])
        # new_str = "李" + "".join(new_list)
        new_str = "".join(new_list)
        # print(new_str)
        return new_str
    # 随机返回一个名称
    def generate_real_name(self):
        num = random.randint(1, 1307)
        name = ["王石",  "蒋锡培", "向文波", "牛根生", "熊晓鸽", "王冉", "于清教", "谢清海", "刘旗辉", "刘步尘", "陈达夫", "船长", "叶茂中", "李士福", "王进生", "任志强", "付伟", "孙虹钢", "宋新宇", "王微", "翁向东", "周济谱", "袁岳", "成君忆", "艾学蛟", "雷永军", "刘秋华", "宋炜", "刘东华", "科特勒", "陈志列", "张巨峰", "姚日来", "李朝曙", "刘兴亮", "沧海", "曾玉", "姜汝祥", "徐浩然", "邓国坚", "辜胜阻", "范以锦", "郭梓林", "秦合舫", "王育琨", "王辉耀", "胡奎", "华仔", "韩耀国", "唐清建", "曲向东", "李志起", "吴伯凡", "景素奇", "贾昌荣", "林国峰", "沈坤", "刘贤方", "周永亮", "马向阳", "熊焰", "唐崇健", "王广伟", "孔繁任", "刘孝全", "徐浩然", "沈青", "陈功", "李肃", "宋立新", "金错刀", "刘泳华", "路长全", "白立新", "蒋小华", "杨晖", "王永", "王颖", "陈亮", "郭凡生", "黄鸣", "靳羽西", "王吉万", "蔡明", "杨卓舒", "周鸿祎", "栾润峰", "赵民", "姜汝祥", "季欣麟", "张志雄", "张琼", "钱学锋", "卞华舵", "王嘉伦", "卞秉彬", "白云峰", "程朝晖", "周彦平", "刘佳", "杨曦沦", "卢文兵", "刘石", "池向东", "毕国才", "王吉舟", "王方剑", "杨子云", "庞玉良", "严旭", "郭世邦", "谢宏", "林义相", "王正华", "严介和", "张志勇", "端木", "吕多加", "刘杰克", "于刚", "姜明", "王巍", "聂庆平", "宋文洲", "赵晓", "张五常", "茅于轼", "王吉绯", "易宪容", "赵锡军", "王福重", "巫继学", "陆新之", "梅新育", "时寒冰", "郭田勇", "邹恒甫", "盛洪", "张曙光", "王东京", "刘军洛", "何帆", "巴曙松", "朱庄虹", "刘纪鹏", "金岩石", "王先庆", "卢麒元", "项兵", "丁学良", "张宁", "段绍译", "林毅夫", "肖金成", "张寅", "张旭昆", "陶冬", "卢菁", "徐滇庆", "董藩", "何协", "余根钱", "鲁政委", "余元洲", "董保华", "孙立坚", "谢百三", "汤敏", "丁志杰", "郎咸平", "王志乐", "马宇", "何志毅", "吴志峰", "谢作诗", "朱锡庆", "薛兆丰", "郑风田", "沈明高", "何维达", "许家林", "吕随启", "韩志国", "左晓蕾", "刘煜辉", "董登新", "恩道尔", "曹凤岐", "黄明", "迪迪埃", "李开发", "孙涤", "曹建海", "尹中立", "吴晓波", "张明", "肖耿", "陈志武", "李玲", "徐洪才", "林伯强", "赖伟民", "赵伟", "刘利刚", "周其仁", "李稻葵", "管清友", "夏斌", "胡星斗", "石建勋", "秦晖", "曹远征", "郝演苏", "袁钢明", "王小鲁", "顾铭德", "潘英丽", "孔祥智", "何广文", "陈杰", "许小年", "陈平", "王占阳", "张维迎", "姚余梁", "韩复龄", "周天勇", "陈浩武", "郭生祥", "范必", "姚树洁", "谢丹阳", "洪平凡", "赵弘", "吴国俊", "沈建光", "邹恒甫", "杨再平", "李罗力", "朱宁", "冯兴元", "熊鹭", "于晓华", "屈宏斌", "黄震", "刘尚希", "黄建中", "王德培", "叶檀", "杨宇东", "马光远", "皮海洲", "刘正山", "方泉", "刘兆辉", "周春兵", "陈序", "鲁宁", "宁山", "吴木銮", "朱小央", "朱大鸣", "钮文新", "村妇", "刘杉", "苏培科", "董少鹏", "五连发", "罗振宇", "周斌", "程实", "罗建法", "罗天昊", "曹中铭", "杜泽壮", "马忠普", "杨小洁", "张志伟", "张维", "傅峙峰", "盛大林", "水皮", "余丰慧", "陈剑夫", "秦朔", "费国平", "朱时均", "苏小和", "张弓惊", "曹彤", "张庭宾", "石磊", "明清石", "窦含章", "徐旭红", "周太友", "赵岩", "封城", "唐钧", "童大焕", "罗慰年", "周行健", "刘振华", "智勇", "林采宜", "刘忠良", "何亚福", "刘远举", "胡释之", "蔡红东", "杨林", "艾诚", "孙荣海", "李胜哲", "孙艳艳", "李馨", "张志军", "张厚宝", "庞文涛", "宋爽", "胡婷", "王金国", "张继福", "羊琳", "金鑫", "汪涛", "于雷", "盛凤霞", "刘广永", "张淑杜", "李扬", "秦嘉欣", "王岚", "马键伟", "宋继朋", "李爱玲", "刘莉", "孙广辉", "王长兴", "张文杰", "刁希刚", "王燕", "曹振伟", "于坤志", "修明义", "吕丕星", "江守君", "吴爱芹", "陆桂玲", "潘贻斐", "王秀芹", "王彩玲", "郭军萍", "史忠诺", "继玉民", "廉鸿梅", "刘翔", "周希芳", "刘成洪", "王丽丽", "李孝寿", "孙蓬勃", "王俊", "徐立波", "尹翠花", "朱记祥", "李卫", "邹大鹏", "边文浩", "霰琳", "李泰龙", "赵磊", "朱永胜", "吕芹", "伊佳", "邢宝标", "路玉娥", "于国良", "侯烁", "王丽华", "郭建昌", "郭方臣", "苏学玲", "马腾宾", "于海涛", "王光志", "尹晓艳", "张桂荣", "孙业明", "杨逢永", "孙浩成", "荆林忠", "徐长坤", "钱玉国", "韩其军", "韩利祥", "郝庆", "孙登强", "韩祥杰", "苏磊", "于洪娟王建", "王介珍", "种硕", "魏书美", "陈建军", "李姝辰", "刘玉环", "马伟", "欧晓丽", "曹士伟", "高升", "王新成", "董晓丽", "王道平", "李生", "乔伟", "迟洪江", "王洪艳", "邹明", "张培顺", "马振国", "林杉", "张雷", "范鹏飞", "栾淑芳", "周天茂", "张迎明", "金娜", "闫有志", "林树香", "王建勋", "王艳", "赵启超", "侯悦军", "逄永波", "刘万乐", "刘法滇", "王世杰", "梁传祺", "丁琳", "王伟", "孟玲", "李文光", "张林", "宫保杰", "原世梅", "王立娜", "王恒利", "李晓燕", "崔建成", "王晓怡", "刘卫平", "程瑶瑶", "崔林平", "许帅", "袁人刚", "李广庆", "李洋", "张锡惠", "宋迪", "赵良臣", "吕品志", "魏燕", "刘子龙", "杜建强", "王萍", "梁娟娟", "侯力红", "王立萍", "侯晓荣", "崔天忠", "郝军", "梁雪燕", "张璋", "王洪娜", "范玉花", "王幸琦", "齐进友", "冀涛涓", "于芹", "娄承旭", "王荣", "马殿增", "刘冬冬", "荀学贵", "王春虹", "王学策", "张丽敏", "薛英进", "方景盛", "崔财本", "李新海", "潘士俊", "张倩", "王心刚", "王汝良", "战德昌", "金晟鸣", "吕荣福", "隋信良", "温瑞班", "王育胜", "闫福林", "王尊序", "马德志", "马秀妮", "马小磊", "刘振德", "慈华", "孙国业", "徐立超", "丁萍", "葛树民", "耿成名", "范贞杰", "孔祥", "王积霞", "杨丰艳", "迮兴顺", "梁学林", "范桂兰", "王世岐", "孙亮", "秦绍其", "姜亮", "许本杰", "张爱荣", "刘新景", "段玉显", "王志旭", "秦永生", "王庚芳", "于涛", "周林梅", "霍钰馨", "唐小莉", "李向东", "李英军", "吕守辉", "王国建", "邹志迅", "张焕强", "董文颖", "邵家初", "王思厚", "韩阜呈", "孙爱卿", "蒋健", "骆洪训", "孙建芹", "李培明", "杨培友", "于晓光", "张翠芝", "王玉欣", "王瑞卿", "王明舫", "姜华", "李海英", "邹清好", "吕建国", "侯东基", "刘雪夏", "孙成安", "张焕东", "孔钰钧", "刘建", "张妍", "孙晓艳", "姜斌", "王腾", "郭春福", "陈培海", "崔世行", "曲政东", "庞智铭", "陈玉莲", "王静", "马宝忠", "张晓燕", "孙静", "李维斌", "栾吉栋", "李宏利", "盛国财", "于维民", "孙桂玉", "高进光", "刘永秀", "魏兆功", "窦百金", "范作国", "王增林", "方寿亭", "李美玲", "李斌", "孙天波", "姬常洪", "曹洪英", "李宝军", "张淑慧", "陈百鹏", "迟明友", "王玉华", "赵术杰", "冯启花", "韩学生", "徐振强", "崔中珍", "赵守本", "于建群", "宋经芝", "魏范", "赵卫云", "袁文秀", "刘唐清", "孟庆军", "褚艳丽", "郎丰兰", "李锡河", "高洪福", "管恩喜", "马洪坡", "田全昌", "武学英", "李昌盛", "李德仁", "牛士禄", "郭金满", "谢丽玲", "何茂伟", "秦秀江", "李玉军", "宋兆华", "王官苓", "刘宗祥", "牟泽又", "宋少英", "李南南", "鲁长茂", "王槐德", "王福友", "王启砚", "易友全", "周乃良", "周建红", "孙强", "王龙云", "宋学章", "霍丽敏", "李峰", "刘斌", "潘立美", "韩娟", "于伟华", "赵月平", "姜红燕", "寇学有", "常维霞", "董建博", "乔日彩", "张永凤", "毛建民", "姜长富", "郭良娟", "孙志福", "张兆全", "马守春", "顾玉祥", "王三舍", "孙安法", "薛复丽", "孙庆刚", "李培忠", "刘金政", "郭秀功", "李吉章", "孙秀卿", "曹光前", "王龙吉", "赵志灵", "黄凤学", "崔乃成", "张敏", "李培宝", "张爱燕", "邬林", "贾国忠", "王新朋", "张兆明", "汤秀梅", "董兴路", "王汉庆", "刘华伟", "齐云峰", "郑德云", "赵世昌", "李金金", "张金祥", "李兆祥", "李杰", "宋立华", "王俊涛", "刘明红", "袁波", "王继宝", "宋修砚", "刘清东", "孙晶", "王建芬", "王国华", "王钦荣", "李学强", "谭瑞刚", "隋相军", "李扬", "孟庆才", "王树才", "王同华", "张龙祥", "郑艺伟", "张武元", "范庆江", "姜明胜", "管延明", "高明庆", "宫玉春", "刘际伟", "周来清", "王淑祥", "隋建伟", "宋爱香", "范立贤", "赵清明", "岳玉田", "李学信", "郭宽亮", "孙礼忠", "康晓晨", "陈金明", "韩朋朋", "赵洪喜", "郝来勋", "潘加胜", "杨冬论", "王维友", "崔清刚", "郭宗泽", "李花荣", "李作浩", "罗炳弟", "刘先兵", "窦波", "王培明", "潘延伟", "王明磊", "李树昌", "张崇美", "逄淑棋", "付兴杰", "毛玉富", "高树森", "董艳梅", "谭涛", "孙化良", "段勋", "陈炳信", "张佃鑫", "李志田", "王夕光", "郑金波", "季召云", "汪爱东", "周福莉", "段兴水", "李芹梅", "张玉花", "刘玉德", "姜永华", "孙友勤", "刘强", "刘洪亮", "戴纪坤", "路媛媛", "彭树奎", "程焕芝", "刘锋锐", "姜传昆", "管培春", "玄承才", "刘秀英", "孔令海", "李焕春", "黄泽升", "陈玉征", "王密坤", "宋秀清", "王光明", "马良之", "徐培贵", "张立天", "肖存永", "滕少梅", "冷显平", "宋福顺", "杨云汇", "贾春芬", "曹丰春", "王方仁", "王晓君", "张崇兰", "刘琳", "隋丕言", "燕化祥", "丁德群", "孙顺书", "郝佳", "戴建邦", "董丰祥", "孙秀荣", "吴明福", "李世子", "封洪池", "马维江", "郑召玉", "张平", "于振旗", "卢向荣", "许仁涛", "林在霞", "刘西太", "孙娟", "范德福", "张帆", "王献平", "张洪君", "张旭令", "高怀东", "周连祥", "刘华江", "李新", "潘炳友", "陈淑芹", "马元礼", "李砚文", "罗秀娟", "卜洪芬", "张春林", "窦洪法", "陈官杰", "李亚芳", "季彩凤", "房德娟", "刘玉杰", "丁连明", "程清民", "王梅", "孙增英", "王学臣", "潘昭海", "赵顺忠", "刘春光", "高英", "刘明勋", "李芳", "范忠聘", "苑太刚", "侯法永", "张勤栋", "秦国庆", "吴京仁", "王辉", "陈英", "王克平", "孙玉美", "孙乐文", "闵晓涵", "杨志全", "宋丽娟", "王久永", "张昆志", "岳敏", "王增亮", "李淑芹", "赵锡恩", "李青叶", "王岳", "王克军", "宇振红", "王磊", "张彦群", "韩增田", "马启海", "杨孟江", "董小敏", "钟明祥", "邢涛", "夏茂会", "李岩", "刘树芹", "韩燕", "王文东", "齐延波", "周升江", "赵永顺", "李彬彬", "潘贵天", "李国昌", "隋汝明", "王文平", "王法武", "张艳丽", "于长春", "刘建青", "侯少钦", "张庆英", "慈建强", "刘相声", "王克信", "邰学军", "王炳敬", "刘洪岩", "任宪阳", "王中令", "杨炳亮", "魏金燕", "王太彬", "张学林", "刘素梅", "张文芬", "刘奎荣", "张志刚", "张庆荣", "董沙沙", "李仕坤", "陈明纪", "王桂民", "崔董煜", "刘文举", "解相青", "朱连峰", "王洪禄", "葛秀珍", "唐金国", "陈安西", "解炳辉", "于怀河", "苏保宁", "王瑞涛", "刘巨祥", "韩晓雪", "梁立国", "贾翠花", "杨沛然", "陈宜灵", "鲁玉文", "梁睿", "张铖铖", "郝京美", "王超", "阴生军", "杜燕慧", "张磊", "吴秋潼", "李焕丽", "王涛", "刘灿亮", "侯军", "李庆伟", "欧阳春兰", "曹乃胜", "张庆兰", "邓光运", "韩文成", "白仲英", "倪文峰", "程瑞荣", "杨荣军", "桑刚", "鲍光建", "王德洪", "常金峰", "肖秀荣", "张存忠", "李爱清", "江培波", "刘序伟", "林桂森", "孙玉玲", "郭英华", "肖术平", "张新京", "董久丽", "何明丽", "赵国华", "李彩云", "崔军明", "蔡尚芹", "苗晟惠", "李凯", "王金兰", "姜小宁", "结结", "邹平", "伯振仿", "许德兰", "姜军", "于国利", "刘涛", "董崇本", "刘龙", "许志敏", "姜丽", "郭茂慧", "李德新", "刘杰昌", "金光", "王玉华", "李源波", "迟刚", "于永青", "李晓红", "于平平", "江元芹", "李优", "丛朝霞", "毕雪玉", "丛强滋", "许桥", "田序强", "孙吉泽", "盛小凤", "孙玉科", "丛芳", "吕飞", "于洋", "段德云", "郭学明", "丛长日", "李国振", "刘培民", "赵林", "李涛", "曲芳", "郑世善", "徐德爱", "于深洋", "孙兆法", "田法云", "刘新梅", "郝春燕", "李长坤", "陈国强", "吴立强", "刘木安", "刘大伟", "周希宾", "刘明", "王焕民", "相玉常", "吴怀霞", "刘彬", "刘兆铭", "柴成莲", "毛德山", "徐庆岭", "张永善", "董彦义", "张焕英", "侯奇", "张晓红", "顔世国", "崔献慈", "王力雪", "庞廷佩", "刘军", "刘霞", "陈海蓉", "刘彦前", "徐恒莹", "钟海莉", "王希岭", "李瑞月", "魏兆坤", "任博", "宋克中", "刘水军", "刘俊美", "徐淑文", "刘春岭", "赵洪云", "王远升", "张建欣", "孟庆友", "刘纯森", "王敬华", "王永刚", "咸瑞章", "邵士东", "孙凤洪", "刘现典", "左兴安", "张体钊", "徐维田", "符绍彬", "徐家坤", "高志恒", "姬传兰", "王进军", "李仲玉", "李明山", "李京华", "张树", "常从喜", "彭京花", "张涛", "陈彦兆", "刘宝秀", "李冬", "王燕", "张西海", "徐洪君", "夏计芳", "段建练", "赵旭", "赵峰", "鲁芮", "刘美玉", "宋伦峰", "乔玮玮", "苏峰", "冯瑞杰", "杜树芝", "苗洪昌", "史立莉", "谭汝元", "王子春", "刘磊", "张全启", "李萍", "李继祥", "赵新廷", "徐庆峰", "刘元杰", "葛凤霞", "寇荣建", "徐恒彦", "聂新全", "刘树传", "王守刚", "戚佃勤", "孙仲德", "滕金磊", "米德军", "张庆举", "蒋同秀", "郝爱华", "夏德乾", "张朔", "连民", "郭从彦", "卞锡善", "张希亮", "李欣成", "王家松", "徐伟", "李兴友", "高得军", "段凤英", "李长山", "李云", "张建涛", "常子亮", "高树强", "王吉伦", "董克胜", "吴士栋", "焦洪奎", "孟祥森", "刘延群", "何峰旭", "崔学敏", "刁玉香", "刘润泽", "刘军", "惠敏", "王文元", "崔永霞", "杨化强", "吴传金", "蒋宁波", "王友", "任庆伟", "张之余", "吴世娟", "王立涛", "赵彦山", "刘海芝", "朱孟月", "丁大伟", "王涛", "宋艳阳", "孟凡义", "边纪恩", "丁媛媛", "高持霞", "姜丽华", "李明", "李萍", "李玉逢", "刘艳飞", "王凤叶", "魏红", "徐晓丽", "杨玉石", "张贞", "单卫", "王恒建", "张龙江", "周新", "胡彬", "吴垒历", "殷超", "崔媛媛", "徐祗江", "唐信山", "刘现宁", "李学农", "王光娟", "徐鹏", "付润升", "王思维", "郭东瑞", "陈棚", "马金龙", "刘占飞", "苏云芳", "张文广", "于君生", "宋继成", "姚晓东", "郭士林", "林祥芬", "蒋沂萍", "杨香", "任玉婷", "邓新华", "朱振军", "潘松岭", "冷静", "纪飞", "张连第", "朱苓", "吴汉兵", "孙宏昌", "鞠春娟", "张雷", "殷兴华", "王春", "宋增芬", "陈琪森", "朱高峰", "徐利", "张莉", "房德川", "张维成", "徐蕾", "赵娟", "聂佳丽", "李希玲", "庄悦宁", "薛原", "徐淑磊", "薛希合", "孙钦功", "韩立", "薛琳彦", "王晓磊", "朱礼明", "高文秀", "付朝彬", "李凤琴", "王学山", "王利利", "李洪英", "杨德福", "邵爱莲", "李兴旺", "车秀河", "苑琳琳", "刘晖", "冯学森", "赵吉平", "张希勇", "康殿保", "怀山", "杨翱", "崔广波", "王荣", "张桂芹", "王韶忠", "黄玉荣", "韩延丽", "韩秋生", "张林", "台杰", "刘斌", "李自留", 
                "蔡徐坤", "陈立农", "范丞丞", "黄明昊", "林彦俊", "朱正廷", "王子异", "王琳凯", "尤长靖", "毕雯珺", "李希侃", "黄新淳", "李权哲", "丁泽仁", "秦奋", "韩沐伯", "徐鹤尼", "左叶", "罗正", "陆定昊", "董又霖", "董岩磊", "钱正昊", "韩雍杰", "木子洋", "灵超", "岳岳", "卜凡", "朱均天", "朱均一", "朱一文", "张晨宇", "应智越", "万宇贤", "吕晨瑜", "宋微子", "何东东", "李长庚", "张艺凡", "李若天", "邓烺怡", "靖佩瑶", "周腾阳", "杨羿", "张奕轩", "姜京佐", "许凯皓", "凌崎", "周彦辰", "朱星杰", "Rapen", "Glgel", "张昕", "王宥辰", "陈斯琪", "于洁", "武连杰", "徐圣恩", "张达源", "陈名豪", "王梓豪", "金逸涵", "甘俊", "明鹏", "侯浩然", "余明君", "姜祎", "娄滋博", "胡致邦", "高茂桐", "叶泓希", "伽里", "罗杰", "李志杰", "林浩楷", "孙凡杰", "于斌", "何嘉庚", "孙浩然", "张晏恺", "李俊毅", "谭俊毅", "黄书豪", "陈义夫", "闵喆祥", "李让", "周锐", "郑瑞彬", "林超泽", "赵凌峰", "赵俞澈", "邱治谐", "梁辉", "杨非同", "李汶翰", "胡春杨", "胡文煊", "林陌", "陈宥维", "陈涛", "李宗霖", "嘉羿", "邓泽鸣", "卡斯柏", "杨朝阳", "邓超元", "王喆", "车慧轩", "蒙恩", "连淮维", "夏瀚宇", "姚明明", "师铭泽", "姜圣民", "李之繁", "管烁", "易烊千玺", "王俊凯", "王源", "丁程鑫", "马嘉祺", "张真源", "敖子逸", "李天泽", "陈玺达", "宋亚轩", "刘耀文", "贺俊霖", "刘昊然", "吴磊", "郑凯", "鹿晗", "陈赫", "李晨", "邓超", "包贝尔", "王祖蓝", "王宝强", "张翰", "吴尊", "白敬亭", "魏大勋", "邓伦", "周杰伦", "汪苏泷", "许嵩", "徐良", "张艺兴", "道枝骏佑", "片寄凉太", "山崎贤人", "黄子韬", "吴世勋", "边伯贤", "朴灿烈", "金钟大", "金钟仁", "都暻秀", "金钟国", "王嘉尔", "刘宪华", "杜海涛", "沈腾", "何炅", "李维嘉", "薛之谦", "杨洋", "成龙", "李小龙", "吴京", "李易峰", "华晨宇", "纪凌尘", "陈翔", "车银尤", "南赫柱", "王力宏", "潘玮柏", "古天乐", "罗志祥", "苏有朋", "林志颖", "马天宇", "胡先煦", "马可", "吴彦祖", "任嘉伦", "李荣浩", "艾芙杰尼", "邢昭林", "林更新" ]
        unicode_name = chr(random.randint(0x4e00, 0x9fbf))
        return ("李" + unicode_name + name[num][0] + name[num][1])

    # 校验身份证最后一位是否正确
    def check_last_idnum(self, id=None):
        '''
        @param id: 传入18位身份证号码
        @return: 返回通过校验True/False
        '''
        lis = list(id)
        ten = ['X', 'x', 'Ⅹ']
        ID = ["10" if i in ten else i for i in lis]     #将罗马数字Ⅹ和字母X替换为10
        W = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
        Checkcode = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]
        sum = 0
        for i in range(17):
            sum = sum + int(ID[i]) * W[i]
        if Checkcode[sum % 11] == int(ID[17]):
            print('输入正确')
            return True
        else:
            print('输入错误')
            return False

    # 生成18位身份证号码,测试过程中发现1000次有87次无法通过校验,老脚本舍弃
    def generate_old_id(self):
        '''
        1.随机生成身份证号,现行身份证号为18位
        2.组成部分为6位地址码,8位生日,3位顺序码(最后一位奇数为男,偶数为女),
        3.一位校验码,并作为返回值
        '''
        area_id = str(510000)
        year = str(random.randint(1990, 1999))
        # 生成月份日期 方法为当前日期+随机时间
        da = date.today()+timedelta(days=random.randint(1, 366))  # 月份和日期项
        da = da.strftime('%m%d')
        code = str(random.randrange(100, 999, 2))  # 生成顺序码,女性
        id = area_id+year+da+code  # 除最后一位的身份证
        # 生成校验码
        count = 0
        weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] #权重项
        checkcode = {'0': '1', '1': '0', '2': 'X', '3': '9', '4': '8', '5': '7', '6': '6', '7': '5', '8': '5', '9': '3', '10': '2'}  # 校验码映射
        for i in range(0, len(id)):
            count = count + int(id[i])*weight[i]
        check = checkcode[str(count%11)]  # 算出校验码
        id = id + check  #组合生成身份证号
        return id
    # (新脚本)生成18位身份证号码,1000次测试1000次通过校验,
    def generate_new_id(self):
        '''随机生成个身份证号,现行身份证号为18位,分别为6位地址码,8位生日,3位顺序码(最后一位基数为男,偶数为女),一位校验码,并作为返回值'''
        area_id = str(510000)
        year = str(random.randint(1990, 1999))
        # 生成月份日期 方法为当前日期+随机时间
        da = date.today()+timedelta(days=random.randint(1, 366))  # 月份和日期项
        da = da.strftime('%m%d')
        code = str(random.randrange(100, 999, 2))  # # 生成顺序码(女)
        # 除最后一位的身份证
        id = area_id+year+da+code
        list_id = list(id)
        ten = ['X', 'x', 'Ⅹ']
        ID = ["10" if i in ten else i for i in list_id]     # 将罗马数字Ⅹ和字母X替换为10
        Weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
        Checkcode = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]
        sum = 0
        for i in range(17):
            sum = sum + int(ID[i]) * Weight[i]
        last_num = Checkcode[sum % 11]

        id = str(id) + str(last_num)          # 组合生成身份证号
        if "X" in id:
            id = self.generate_new_id()
            return id
        else:
            return id

    # 老脚本(生成银行卡,无法通过银行校验)
    def generate_oldbank_id(self):
        '''随机生成建行银行卡,并作为返回值'''
        head = '621284'
        list1 = []
        for i in range(11):
            list1.append(random.choice('0123456'))
        part = ''.join(list1)
        end = '10'
        code = head+part+end
        return code

    # 新脚本(生成银行卡并通过校验,校验银行卡是否正确(Luhn算法))
    '''
    if __name__ == '__main__':
        for _ in range(10):
            random_card_num = gen_card_num('621284', 19)
            valid_result = check_luhn(random_card_num)
            print('%s %s' % (random_card_num, valid_result))
    '''
    # 银行卡校验(Luhn算法)
    def check_luhn(self, card_num):
        s = 0
        card_num_length = len(card_num)
        for _ in range(1, card_num_length + 1):
            t = int(card_num[card_num_length - _])
            if _ % 2 == 0:
                t *= 2
                s += t if t < 10 else t % 10 + t // 10
            else:
                s += t
        return s % 10 == 0
    def generate_newbank_id(self, start_with, total_num):
        result = start_with
        # 随机生成前N-1位
        while len(result) < total_num - 1:
            result += str(random.randint(0, 9))
        # 计算前N-1位的校验和
        s = 0
        card_num_length = len(result)
        for _ in range(2, card_num_length + 2):
            t = int(result[card_num_length - _ + 1])
            if _ % 2 == 0:
                t *= 2
                s += t if t < 10 else t % 10 + t // 10
            else:
                s += t
        # 最后一位当做是校验位,用来补齐到能够整除10
        t = 10 - s % 10
        result += str(0 if t == 10 else t)
        if Auth().check_luhn(result):
            return result
        else:
            return "生成银行卡号失败"
    # 自动生成手机号
    def generate_mobile(self):
        tel = random.choice(['134', '139', '135', '150', '151', '157', '130', '132', '133', '153'])
        list1 = []
        for i in range(8):
            list1.append(random.choice('0123456789'))
        part = ''.join(list1)
        mobile = tel+part
        return mobile
    # 写入文本,注意修改路径
    def write_fourinfomation_txt(self,filename,user_info, mode="a+"):
        filepath = "D:\Mytest\Python3\Python3\\"
        # 写入新文件(如果没有文件后缀.txt,默认文本文件)
        with open(filepath + f'{filename}', mode=mode, encoding="utf8") as wfile:
            wfile.write(user_info)
            wfile.write("\n")
            wfile.seek(0, 0)
            new = wfile.read()
            # print(str(new))

if __name__ == '__main__':
    '''
    now = datetime.datetime.now()
    nowtime=str(now.strftime('%Y%m%d%H%M%S'))
    logging.basicConfig(filename=os.path.join(os.getcwd(),'生成的身份证号'+nowtime+'.txt'),level=logging.INFO)
    for i in range(100):
        logging.info("随机生成的身份证号码=%s",Auth().id())
    '''
    def tmp(j=0):
        logTime = time.strftime('%Y%m%d_%H:%M:%S', time.localtime(time.time()))
        m = ""
        dev, sit, uat, pre = "0", "1", "2", "3"
        for i in range(1, 5000):
            # idName = Auth().realname()
            idName = Auth().generate_number_name(change_num=str(i))
            idNo = Auth().generate_new_id()
            idBank = Auth().generate_newbank_id('621284', 19)
            # idMobile = Auth().generate_mobile()
            idMobile = f"185{sit:0>2}{j:0>2}{i:0>4}"  # dev:0,sit:1,文件名0,序号5001
            m = f"{idName}"+","+f"{idNo:<18}"+","+idBank+","+idMobile
            # print(m)
            Auth().write_fourinfomation_txt(f"2020_infoAutoID{j}.txt", str(m))
    for n in range(11, 12, 1):
        tmp(j=n)





猜你喜欢

转载自blog.csdn.net/denzeleo/article/details/106854022