python—测试工具开发流程(3)—案例生成指定规则的密码:任务2-分支结构练习

  • v1版:
    • 脚本设计流程图:
    • 代码:
      • # v1.1 自动生成密码,用面向过程进行封装
        import random
        import string
        
        def get_pwd(minlen,maxlen,pwdtype):
            # 换取指定长度
            rdm_num = random.randint(minlen,maxlen)
            str = ''
            # 判断类型
            # 获取指定长度的英文
            if pwdtype == 1:
                # 循环累加下英文字符串数据
                for i in range(1, 11):
                    str = str + string.ascii_letters
            # 获取指定长度的数字
            elif pwdtype == 2:
                for i in range(1, 21):
                    str = str + string.digits
            # 获取指定长度的符号
            elif pwdtype == 3:
                for i in range(1, 21):
                    str = str + string.punctuation
            else:
                print('输入的类型有误!')
                return(-1)
            pdw_str = ''.join(random.sample(str, rdm_num))
            return pdw_str
        
        if __name__ == '__main__':
            # 输入相关条件:
            # 1.指定长度:Min,Max
            minlen = int(input("请输入密码长度的最小值:"))
            maxlen = int(input("请输入密码长度的最大值:"))
            # 2.指定类型:①英文,②数字,③符号
            pwdtype = int(input("请输入密码的类型:"))
            # 调用函数
            result = get_pwd(minlen,maxlen,pwdtype)
            if result != -1:
                print('密码字符串:',result)
            else:
                pass

         

  • 保存测试数据到csv:
    • 代码:
      • # 生成测试数据文件
        import csv
        import random
        import string
        
        
        def get_pwd(minlen,maxlen,pwdtype):
            # 换取指定长度
            rdm_num = random.randint(minlen,maxlen)
            str = ''
            # 判断类型
            # 获取指定长度的英文
            if pwdtype == 1:
                # 循环累加下英文字符串数据
                for i in range(1, 11):
                    str = str + string.ascii_letters
            # 获取指定长度的数字
            elif pwdtype == 2:
                for i in range(1, 21):
                    str = str + string.digits
            # 获取指定长度的符号
            elif pwdtype == 3:
                for i in range(1, 21):
                    str = str + string.punctuation
            # 英文+数字
            elif pwdtype == 4:
                for i in range(1, 21):
                    str = str + string.digits+string.digits+string.digits
                    str = str + string.ascii_letters
            # 英文+数字+符号
            elif pwdtype == 5:
                for i in range(1, 11):
                    str = str + string.digits + string.digits + string.digits
                    str = str + string.punctuation + string.punctuation
                    str = str + string.ascii_letters
            else:
                print('输入的类型有误!')
                return(-1)
            pdw_str = ''.join(random.sample(str, rdm_num))
            
            # 纯数字字符串,会存成科学计数法,在他后面+'\t'
            if pwdtype == 2:
                pdw_str = pdw_str+'\t'
        
            return pdw_str
        
        if __name__ == '__main__':
        
            # 打开文件
            file = open('password.csv','w',newline='')
            # 创建编辑器
            cw = csv.writer(file)
        
            # 输入相关条件:
            # 1.指定长度:Min,Max
            minlen = int(input("请输入密码长度的最小值:"))
            maxlen = int(input("请输入密码长度的最大值:"))
        
            # 输入需要的密码个数
            count = int(input('请输入需要的密码个数:'))
            for i in range(1,count+1):
                # 随机生成密码类型
                pwdtype = random.randint(1,5)
                # 调用函数
                result = get_pwd(minlen, maxlen, pwdtype)
                
                # 函数代码中非return -1,才是1~5个类型中
                # 现在用例随机数产生5个类型,代码还可优化,先保留
                if result != -1:
                    print('密码字符串:', result)
                    # 写入数据(需要把写入的数据放在中括号中,否则数据会被拆开)
                    cw.writerow([i, result])
                else:
                    pass
            # 关闭文件
            file.close()

         

    • 截图
      •  

         

posted @ 2023-01-17 22:37  沐沂  阅读(64)  评论(0)    收藏  举报