自动化测试工具集成

python自动化测试常用方法工具集成

正文

# -*- coding:utf-8 -*-

import requests
import time
import datetime
import pymysql
import string
import json
import re
import hashlib
import random
import openpyxl
import urllib
import pywinauto
import calendar
import os
import os.path
from PIL import Image
from selenium.webdriver.common.keys import Keys
from faker import Faker
from datetime import timedelta
from mimesis import *


class http_api:

    def __init__(self, ip, 请求头={}, 入参方式='json', 打印=3):
        self.ip = ip
        self.请求头 = 请求头
        self.打印 = 打印
        self.入参方式 = 入参方式

    def get(self, 路径, 请求体, 请求头={}, cookie={}):

        if self.入参方式 == 'json':
            try:
                if 请求头 == {}:
                    if cookie == {}:
                        r = requests.get(self.ip + 路径, params=请求体, headers=self.请求头)
                    else:
                        r = requests.get(self.ip + 路径, params=请求体, headers=self.请求头, cookies=cookie)
                else:
                    if cookie == {}:
                        r = requests.get(self.ip + 路径, params=请求体, headers=请求头)
                    else:
                        r = requests.get(self.ip + 路径, params=请求体, headers=请求头, cookies=cookie)

                r.encoding = 'utf-8'
                output = json.loads(r.text)
            except Exception as e:
                output = {'code': None, 'msg': str(e), 'data': None}

        if self.入参方式 == 'data':
            try:
                if 请求头 == {}:
                    if cookie == {}:
                        r = requests.get(self.ip + 路径, params=请求体, headers=self.请求头)
                    else:
                        r = requests.get(self.ip + 路径, params=请求体, headers=self.请求头, cookies=cookie)
                else:
                    if cookie == {}:
                        r = requests.get(self.ip + 路径, params=请求体, headers=请求头)
                    else:
                        r = requests.get(self.ip + 路径, params=请求体, headers=请求头, cookies=cookie)

                r.encoding = 'utf-8'
                output = json.loads(r.text)
            except Exception as e:
                output = {'code': None, 'msg': str(e), 'data': None}

        if self.打印 == 1:
            print('\n\n\n')
            print("》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》")
            ping = {
                '请求地址': r.url,
                '请求结果': output
            }
            print(json.dumps(ping, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':')))
            print("《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《")

        if self.打印 == 2:
            print('\n\n\n')
            print("》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》")
            ping = {
                '请求地址': str(r.url),
                '请求体': 请求体,
                '请求结果': output,
            }
            print(json.dumps(ping, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':')))
            print("《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《")

        if self.打印 == 3:
            print('\n\n\n')
            print("》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》")
            ping = {
                '请求地址': str(r.url),
                '请求头': eval(str(r.request.headers)),
                'cookie': requests.utils.dict_from_cookiejar(r.cookies),
                '请求体': 请求体,
                '请求方式': '------GET------',
                '请求结果': output,
            }
            print(json.dumps(ping, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':')))
            print("《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《")

        return output

    def GET(self, 路径, 请求体, 请求头={}, cookie={}):

        if self.入参方式 == 'json':
            try:
                if 请求头 == {}:
                    if cookie == {}:
                        r = requests.get(self.ip + 路径, params=请求体, headers=self.请求头)
                    else:
                        r = requests.get(self.ip + 路径, params=请求体, headers=self.请求头, cookies=cookie)
                else:
                    if cookie == {}:
                        r = requests.get(self.ip + 路径, params=请求体, headers=请求头)
                    else:
                        r = requests.get(self.ip + 路径, params=请求体, headers=请求头, cookies=cookie)

                r.encoding = 'utf-8'
                output = json.loads(r.text)
            except Exception as e:
                output = {'code': None, 'msg': str(e), 'data': None}

        if self.入参方式 == 'data':
            try:
                if 请求头 == {}:
                    if cookie == {}:
                        r = requests.get(self.ip + 路径, params=请求体, headers=self.请求头)
                    else:
                        r = requests.get(self.ip + 路径, params=请求体, headers=self.请求头, cookies=cookie)
                else:
                    if cookie == {}:
                        r = requests.get(self.ip + 路径, params=请求体, headers=请求头)
                    else:
                        r = requests.get(self.ip + 路径, params=请求体, headers=请求头, cookies=cookie)

                r.encoding = 'utf-8'
                output = json.loads(r.text)
            except Exception as e:
                output = {'code': None, 'msg': str(e), 'data': None}

        if self.打印 == 1:
            print('\n\n\n')
            print("》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》")
            ping = {
                '请求地址': r.url,
                '请求结果': output
            }
            print(json.dumps(ping, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':')))
            print("《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《")

        if self.打印 == 2:
            print('\n\n\n')
            print("》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》")
            ping = {
                '请求地址': str(r.url),
                '请求体': 请求体,
                '请求结果': output,
            }
            print(json.dumps(ping, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':')))
            print("《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《")

        if self.打印 == 3:
            print('\n\n\n')
            print("》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》")
            ping = {
                '请求地址': str(r.url),
                '请求头': eval(str(r.request.headers)),
                'cookie': requests.utils.dict_from_cookiejar(r.cookies),
                '请求体': 请求体,
                '请求方式': '------GET------',
                '请求结果': output,
            }
            print(json.dumps(ping, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':')))
            print("《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《")

        return output

    def post(self, 路径, 请求体, 请求头={}, cookie={}):

        if self.入参方式 == 'json':
            try:
                if 请求头 == {}:
                    if cookie == {}:
                        r = requests.post(self.ip + 路径, json=请求体, headers=self.请求头)
                    else:
                        r = requests.post(self.ip + 路径, json=请求体, headers=self.请求头, cookies=cookie)
                else:
                    if cookie == {}:
                        r = requests.post(self.ip + 路径, json=请求体, headers=请求头)
                    else:
                        r = requests.post(self.ip + 路径, json=请求体, headers=请求头, cookies=cookie)

                r.encoding = 'utf-8'
                output = json.loads(r.text)
            except Exception as e:
                output = {'code': None, 'msg': str(e), 'data': None}

        if self.入参方式 == 'data':
            try:
                if 请求头 == {}:
                    if cookie == {}:
                        r = requests.post(self.ip + 路径, data=请求体, headers=self.请求头)
                    else:
                        r = requests.post(self.ip + 路径, data=请求体, headers=self.请求头, cookies=cookie)
                else:
                    if cookie == {}:
                        r = requests.post(self.ip + 路径, data=请求体, headers=请求头)
                    else:
                        r = requests.post(self.ip + 路径, data=请求体, headers=请求头, cookies=cookie)

                r.encoding = 'utf-8'
                output = json.loads(r.text)
            except Exception as e:
                output = {'code': None, 'msg': str(e), 'data': None}

        if self.打印 == 1:
            print('\n\n\n')
            print("》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》")
            ping = {
                '请求地址': r.url,
                '请求结果': output
            }
            print(json.dumps(ping, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':')))
            print("《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《")

        if self.打印 == 2:
            print('\n\n\n')
            print("》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》")
            ping = {
                '请求地址': str(r.url),
                '请求体': 请求体,
                '请求结果': output,
            }
            print(json.dumps(ping, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':')))
            print("《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《")

        if self.打印 == 3:
            print('\n\n\n')
            print("》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》")
            ping = {
                '请求地址': str(r.url),
                '请求头': eval(str(r.request.headers)),
                'cookie': requests.utils.dict_from_cookiejar(r.cookies),
                '请求体': 请求体,
                '请求方式': '------POST------',
                '请求结果': output,
            }
            print(json.dumps(ping, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':')))
            print("《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《")

        return output

    def POST(self, 路径, 请求体, 请求头={}, cookie={}):

        if self.入参方式 == 'json':
            try:
                if 请求头 == {}:
                    if cookie == {}:
                        r = requests.post(self.ip + 路径, json=请求体, headers=self.请求头)
                    else:
                        r = requests.post(self.ip + 路径, json=请求体, headers=self.请求头, cookies=cookie)
                else:
                    if cookie == {}:
                        r = requests.post(self.ip + 路径, json=请求体, headers=请求头)
                    else:
                        r = requests.post(self.ip + 路径, json=请求体, headers=请求头, cookies=cookie)

                r.encoding = 'utf-8'
                output = json.loads(r.text)
            except Exception as e:
                output = {'code': None, 'msg': str(e), 'data': None}

        if self.入参方式 == 'data':
            try:
                if 请求头 == {}:
                    if cookie == {}:
                        r = requests.post(self.ip + 路径, data=请求体, headers=self.请求头)
                    else:
                        r = requests.post(self.ip + 路径, data=请求体, headers=self.请求头, cookies=cookie)
                else:
                    if cookie == {}:
                        r = requests.post(self.ip + 路径, data=请求体, headers=请求头)
                    else:
                        r = requests.post(self.ip + 路径, data=请求体, headers=请求头, cookies=cookie)

                r.encoding = 'utf-8'
                output = json.loads(r.text)
            except Exception as e:
                output = {'code': None, 'msg': str(e), 'data': None}

        if self.打印 == 1:
            print('\n\n\n')
            print("》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》")
            ping = {
                '请求地址': r.url,
                '请求结果': output
            }
            print(json.dumps(ping, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':')))
            print("《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《")

        if self.打印 == 2:
            print('\n\n\n')
            print("》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》")
            ping = {
                '请求地址': str(r.url),
                '请求体': 请求体,
                '请求结果': output,
            }
            print(json.dumps(ping, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':')))
            print("《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《")

        if self.打印 == 3:
            print('\n\n\n')
            print("》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》")
            ping = {
                '请求地址': str(r.url),
                '请求头': eval(str(r.request.headers)),
                'cookie': requests.utils.dict_from_cookiejar(r.cookies),
                '请求体': 请求体,
                '请求方式': '------POST------',
                '请求结果': output,
            }
            print(json.dumps(ping, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':')))
            print("《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《")

        return output


class web_api:
    def __init__(self, 对象, 最长等待时间=30, 等待间隔=1, 步骤等待时间=0.4):
        self.浏览器对象 = 对象
        self.最长等待时间 = 最长等待时间
        self.等待间隔 = 等待间隔
        self.步骤等待时间 = 步骤等待时间
        self.当前绝对路径 = str(os.getcwd())

    def 点击(self, xpath):
        time.sleep(self.步骤等待时间 / 2)
        循环数 = 1

        while 循环数 < self.最长等待时间:

            try:
                app = self.浏览器对象.find_element_by_xpath(xpath)
                app.click()
                循环数 = (self.最长等待时间 + 100)
            except:
                time.sleep(self.等待间隔)
                循环数 = 循环数 + 1

        if 循环数 < 100:
            print(f'找不到元素:{xpath}')

        time.sleep(self.步骤等待时间 / 2)

    def 输入(self, xpath, text):
        time.sleep(self.步骤等待时间 / 2)
        循环数 = 1

        while 循环数 < self.最长等待时间:

            try:
                app = self.浏览器对象.find_element_by_xpath(xpath)
                app.clear()
                app.send_keys(text)
                循环数 = (self.最长等待时间 + 100)
            except:
                time.sleep(self.等待间隔)
                循环数 = 循环数 + 1

        if 循环数 < 100:
            print(f'找不到元素:{xpath}')

        time.sleep(self.步骤等待时间 / 2)

    def 清空(self, xpath):
        time.sleep(self.步骤等待时间 / 2)
        循环数 = 1

        while 循环数 < self.最长等待时间:

            try:
                app = self.浏览器对象.find_element_by_xpath(xpath)
                app.clear()
                循环数 = (self.最长等待时间 + 100)
            except:
                time.sleep(self.等待间隔)
                循环数 = 循环数 + 1

        if 循环数 < 100:
            print(f'找不到元素:{xpath}')

        time.sleep(self.步骤等待时间 / 2)

    def 滚动点击(self, xpath):
        time.sleep(self.步骤等待时间 / 2)
        循环数 = 1

        while 循环数 < self.最长等待时间:

            try:
                app = self.浏览器对象.find_element_by_xpath(xpath)
                js = "arguments[0].scrollIntoView();"
                self.浏览器对象.execute_script(js, app)
                time.sleep(self.步骤等待时间)
                app.click()
                循环数 = (self.最长等待时间 + 100)
            except:
                time.sleep(self.等待间隔)
                循环数 = 循环数 + 1

        if 循环数 < 100:
            print(f'找不到元素:{xpath}')

        time.sleep(self.步骤等待时间 / 2)

    def 滚动输入(self, xpath, text):
        time.sleep(self.步骤等待时间 / 2)
        循环数 = 1

        while 循环数 < self.最长等待时间:

            try:
                app = self.浏览器对象.find_element_by_xpath(xpath)
                js = "arguments[0].scrollIntoView();"
                self.浏览器对象.execute_script(js, app)
                time.sleep(self.步骤等待时间)
                app.clear()
                app.send_keys(text)
                循环数 = (self.最长等待时间 + 100)
            except:
                time.sleep(self.等待间隔)
                循环数 = 循环数 + 1

        if 循环数 < 100:
            print(f'找不到元素:{xpath}')

        time.sleep(self.步骤等待时间 / 2)

    def 标签操作(self, 位置, 方式=1):
        op = True
        while op:
            所有标签 = self.浏览器对象.window_handles
            if len(所有标签) > 1:
                op = False
            else:
                time.sleep(0.5)

        当前标签 = self.浏览器对象.current_window_handle
        if 方式 == 1:  # 切换
            self.浏览器对象.switch_to.window(所有标签[位置])
        if 方式 == 2:  # 关闭
            self.浏览器对象.switch_to.window(所有标签[位置])
            self.浏览器对象.close()
            self.浏览器对象.switch_to.window(当前标签)

    def 新标签(self, ip):
        js = f'window.open("{ip}");'
        self.浏览器对象.execute_script(js)

    def 检测元素(self, xpath):
        time.sleep(self.步骤等待时间 / 2)
        循环数 = 1

        while 循环数 < self.最长等待时间:

            try:
                app = self.浏览器对象.find_element_by_xpath(xpath)
                js = "arguments[0].scrollIntoView();"
                self.浏览器对象.execute_script(js, app)
                time.sleep(self.步骤等待时间)
                循环数 = (self.最长等待时间 + 100)
                return app
            except:
                time.sleep(self.等待间隔)
                循环数 = 循环数 + 1

        if 循环数 < 100:
            print(f'找不到元素:{xpath}')
            return False

        time.sleep(self.步骤等待时间 / 2)

    def 剪切板(self, xpath, text):
        time.sleep(self.步骤等待时间 / 2)
        循环数 = 1

        while 循环数 < self.最长等待时间:

            try:
                app = self.浏览器对象.find_element_by_xpath(xpath)
                app.send_keys(Keys.CONTROL, text)
                循环数 = (self.最长等待时间 + 100)
            except:
                time.sleep(self.等待间隔)
                循环数 = 循环数 + 1

        if 循环数 < 100:
            print(f'找不到元素:{xpath}')

        time.sleep(self.步骤等待时间 / 2)

    def 获取文字(self, xpath):

        time.sleep(self.步骤等待时间 / 2)
        循环数 = 1

        while 循环数 < self.最长等待时间:

            try:
                app = self.浏览器对象.find_element_by_xpath(xpath)
                js = "arguments[0].scrollIntoView();"
                self.浏览器对象.execute_script(js, app)
                time.sleep(self.步骤等待时间)
                text = app.text
                return text
                循环数 = (self.最长等待时间 + 100)
            except:
                time.sleep(self.等待间隔)
                循环数 = 循环数 + 1

        if 循环数 < 100:
            print(f'找不到元素,文字无法输出:{xpath}')
            return ''

        time.sleep(self.步骤等待时间 / 2)

    def 获取html(self, xpath):

        time.sleep(self.步骤等待时间 / 2)
        循环数 = 1

        while 循环数 < self.最长等待时间:

            try:
                app = self.浏览器对象.find_element_by_xpath(xpath)
                text = app.get_attribute('innerHTML')
                return text
                循环数 = (self.最长等待时间 + 100)
            except:
                time.sleep(self.等待间隔)
                循环数 = 循环数 + 1

        if 循环数 < 100:
            print(f'找不到元素,文字无法输出:{xpath}')
            return ''

        time.sleep(self.步骤等待时间 / 2)

    def 文件上传_单(self, 文件路径, 资源管理器名称=u'打开'):
        完整路径 = 文件路径
        app = pywinauto.Desktop()  # 获取资源管理器对象
        dlg = app[资源管理器名称]  # 选中指定资源管理器
        dlg["文件名(&N):Edit"].type_keys(完整路径)  # 选中文件名输入框,输入文件名
        dlg["打开(&O)"].click()


class sql_api:
    def __init__(self, 数据库对象):
        self.数据库对象 = 数据库对象

    # sql查询
    def sql查(self, sql):

        try:
            # 创建链接
            conn = pymysql.connect(
                host=self.数据库对象['mysql地址'],
                port=self.数据库对象['mysql端口'],
                user=self.数据库对象['mysql账号'],
                password=self.数据库对象['mysql密码'],
                db=self.数据库对象['mysql库名'],
                charset='utf8')

            # 创建游标
            cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

            # 执行sql语句
            cursor.execute(sql)

            # 关闭连接,游标和连接都要关闭
            cursor.close()
            conn.close()

            # 获取结果
            result = cursor.fetchall()

            # 判断结果是否为空
            if result == ():
                return "空"
            else:
                data_dict = []
                for i in result:
                    data_dict.append(i)
                return data_dict
        except:
            return "空"

    # sql增删改
    def sql改(self, sql, ):
        try:
            # 创建链接
            conn = pymysql.connect(
                host=self.数据库对象['mysql地址'],
                port=self.数据库对象['mysql端口'],
                user=self.数据库对象['mysql账号'],
                password=self.数据库对象['mysql密码'],
                db=self.数据库对象['mysql库名'],
                charset='utf8')

            cursor = conn.cursor()
            cursor.execute(sql)  # 执行sql语句
            结果 = str(conn.insert_id())
            conn.commit()  # 执行update操作时需要写这个,否则就会更新不成功

            cursor.close()
            conn.close()
            return 结果
        except:
            return "空"


class data_api:

    def __init__(self, 语言1='zh_CN', 语言2='zh'):
        self.fake = Faker(语言1)
        self.person = Person(语言2)
        self.food = Food(语言2)
        self.address = Address(语言2)
        # self.business = Business(语言2)
        self.datetime = Datetime(语言2)
        # self.science = Science(语言2)
        self.text = Text(语言2)

    def 银行(self):
        app = ['国家开发银行'
            ,
               '中国进出口银行'
            ,
               '中国农业发展银行'
            ,
               '中国工商银行'
            ,
               '中国农业银行'
            ,
               '中国银行'
            ,
               '中国建设银行'
            ,
               '交通银行'
            ,
               '中信银行'
            ,
               '中国光大银行'
            ,
               '华夏银行'
            ,
               '中国民生银行'
            ,
               '招商银行'
            ,
               '兴业银行'
            ,
               '广发银行'
            ,
               '平安银行'
            ,
               '上海浦东发展银行'
            ,
               '恒丰银行'
            ,
               '浙商银行'
            ,
               '渤海银行'
            ,
               '中国邮政储蓄银行'
            ,
               '北京银行'
            ,
               '天津银行'
            ,
               '沧州银行'
            ,
               '承德银行'
            ,
               '廊坊银行'
            ,
               '秦皇岛商行'
            ,
               '河北银行'
            ,
               '唐山商行'
            ,
               '张家口商行'
            ,
               '邢台商行'
            ,
               '保定商行'
            ,
               '邯郸商行'
            ,
               '长治市商业银行'
            ,
               '晋城商行'
            ,
               '晋中市商业银行'
            ,
               '晋商银行'
            ,
               '大同市商业银行'
            ,
               '阳泉市商业银行'
            ,
               '内蒙古银行'
            ,
               '包商银行'
            ,
               '鄂尔多斯银行'
            ,
               '乌海银行'
            ,
               '盛京银行'
            ,
               '鞍山银行'
            ,
               '抚顺银行'
            ,
               '本溪市商业银行'
            ,
               '丹东银行'
            ,
               '锦州银行'
            ,
               '营口银行'
            ,
               '阜新银行'
            ,
               '辽阳银行'
            ,
               '铁岭银行'
            ,
               '朝阳银行'
            ,
               '盘锦市商业银行'
            ,
               '葫芦岛银行'
            ,
               '营口沿海银行'
            ,
               '吉林银行'
            ,
               '哈尔滨银行'
            ,
               '龙江银行'
            ,
               '上海银行'
            ,
               '江苏银行'
            ,
               '南京银行'
            ,
               '苏州银行'
            ,
               '江苏长江商业银行'
            ,
               '金华银行'
            ,
               '稠州银行'
            ,
               '杭州银行'
            ,
               '湖州银行'
            ,
               '嘉兴银行'
            ,
               '宁波银行'
            ,
               '绍兴银行'
            ,
               '台州商行'
            ,
               '温州银行'
            ,
               '民泰商行'
            ,
               '泰隆商行'
            ,
               '徽商银行'
            ,
               '福建海峡银行'
            ,
               '泉州银行'
            ,
               '景德镇市商业银行'
            ,
               '北京银行南昌分行'
            ,
               '赣州商行'
            ,
               '九江银行'
            ,
               '南昌银行'
            ,
               '上饶银行'
            ,
               '齐鲁银行'
            ,
               '齐商银行'
            ,
               '枣庄市商业银行'
            ,
               '东营市商业银行'
            ,
               '潍坊银行'
            ,
               '济宁银行'
            ,
               '泰山市商业银行'
            ,
               '威海市商业银行'
            ,
               '日照银行'
            ,
               '莱商银行'
            ,
               '临商银行'
            ,
               '德州银行'
            ,
               '烟台银行'
            ,
               '山东省城市商业银行合作联盟有限公司'
            ,
               '洛阳银行'
            ,
               '郑州银行'
            ,
               '开封市商业银行'
            ,
               '南阳市商业银行'
            ,
               '三门峡市商业银行'
            ,
               '信阳银行'
            ,
               '驻马店银行'
            ,
               '焦作市商业银行'
            ,
               '新乡银行'
            ,
               '湖北银行'
            ,
               '汉口银行'
            ,
               '华融湘江银行股份有限公司'
            ,
               '长沙银行股份有限公司'
            ,
               '广州银行'
            ,
               '东莞银行'
            ,
               '广东南粤银行'
            ,
               '广东华兴银行'
            ,
               '珠海华润银行'
            ,
               '广西北部湾银行'
            ,
               '柳州银行'
            ,
               '桂林银行'
            ,
               '重庆银行'
            ,
               '重庆三峡银行'
            ,
               '成都银行'
            ,
               '自贡市商业银行'
            ,
               '攀枝花市商业银行'
            ,
               '泸州市商业银行'
            ,
               '德阳银行'
            ,
               '绵阳市商业银行'
            ,
               '乐山市商业银行'
            ,
               '南充市商业银行'
            ,
               '宜宾市商业银行'
            ,
               '凉山州商业银行'
            ,
               '遂宁市商业银行'
            ,
               '雅安市商业银行'
            ,
               '达州市商业银行'
            ,
               '贵州银行'
            ,
               '贵阳银行'
            ,
               '富滇银行'
            ,
               '曲靖市商业银行'
            ,
               '玉溪市商业银行'
            ,
               '西藏银行股份有限公司'
            ,
               '长安银行'
            ,
               '西安银行'
            ,
               '兰州银行'
            ,
               '青海银行股份有限公司'
            ,
               '宁夏银行'
            ,
               '昆仑银行股份有限公司'
            ,
               '乌鲁木齐商行'
            ,
               '大连银行'
            ,
               '宁波银行股份有限公司'
            ,
               '宁波东海银行股份有限公司'
            ,
               '宁波通商银行股份有限公司'
            ,
               '厦门银行股份有限公司'
            ,
               '厦门国际银行'
            ,
               '青岛银行'
            ,
               '北京农村商业银行股份有限公司'
            ,
               '天津农村商业银行'
            ,
               '天津滨海农村商业银行'
            ,
               '沧州融信农村商业银行股份有限公司'
            ,
               '鄂尔多斯农村商业银行'
            ,
               '沈阳农村商业银行'
            ,
               '吉林九台农村商业银行股份有限公司'
            ,
               '长春农村商业银行股份有限公司'
            ,
               '上海农商行'
            ,
               '江苏高淳农村商业银行'
            ,
               '江苏溧水农村商业银行'
            ,
               '徐州淮海农村商业银行'
            ,
               '江苏新沂农村商业银行'
            ,
               '江苏邳州农村商业银行'
            ,
               '江苏宜兴农村商业银行'
            ,
               '江苏扬中农村商业银行'
            ,
               '江苏丹阳农村商业银行'
            ,
               '江苏句容农村商业银行'
            ,
               '江苏镇江农村商业银行'
            ,
               '江苏宝应农村商业银行'
            ,
               '江苏仪征农村商业银行'
            ,
               '江苏高邮农村商业银行'
            ,
               '江苏江都农村商业银行'
            ,
               '江苏金湖农村商业银行'
            ,
               '江苏盱眙农村商业银行'
            ,
               '江苏涟水农村商业银行'
            ,
               '江苏淮安农村商业银行'
            ,
               '连云港东方农村商业银行'
            ,
               '江苏赣榆农村商业银行'
            ,
               '江苏沭阳农村商业银行'
            ,
               '江苏泗洪农村商业银行'
            ,
               '江苏泗阳农村商业银行'
            ,
               '江苏民丰农村商业银行'
            ,
               '江苏兴化农村商业银行'
            ,
               '江苏泰州农村商业银行'
            ,
               '江苏姜堰农村商业银行'
            ,
               '江苏东台农村商业银行'
            ,
               '江苏响水农村商业银行'
            ,
               '江苏大丰农村商业银行'
            ,
               '江苏阜宁农村商业银行'
            ,
               '江苏建湖农村商业银行'
            ,
               '江苏盐城黄海农村商业银行'
            ,
               '江苏如东农村商业银行'
            ,
               '江苏启东农村商业银行'
            ,
               '江苏海安农村商业银行'
            ,
               '江苏海门农村商业银行'
            ,
               '江苏如皋农村商业银行'
            ,
               '江苏南通农村商业银行'
            ,
               '江苏紫金农村商业银行'
            ,
               '无锡农村商业银行'
            ,
               '江阴农村商业银行'
            ,
               '常熟农村商业银行'
            ,
               '张家港农村商业银行'
            ,
               '吴江农村商业银行'
            ,
               '昆山农村商业银行'
            ,
               '太仓农村商业银行'
            ,
               '江苏射阳农村商业银行'
            ,
               '靖江农村商业银行'
            ,
               '江南农村商业银行'
            ,
               '杭州联合农村商业银行'
            ,
               '浙江杭州余杭农村商业银行股份有限公司'
            ,
               '浙江温州鹿城农村商业银行股份有限公司'
            ,
               '浙江温州龙湾农村商业银行股份有限公司'
            ,
               '浙江禾城农村商业银行股份有限公司'
            ,
               '浙江嘉善农村商业银行股份有限公司'
            ,
               '浙江德清农村商业银行股份有限公司'
            ,
               '浙江绍兴瑞丰农村商业银行股份有限公司'
            ,
               '浙江诸暨农村商业银行股份有限公司'
            ,
               '浙江新昌农村商业银行股份有限公司'
            ,
               '浙江义乌农村商业银行'
            ,
               '浙江舟山定海农村商业银行股份有限公司'
            ,
               '浙江舟山普陀农村商业银行股份有限公司'
            ,
               '浙江南浔农村商业银行股份有限公司'
            ,
               '蚌埠农村商业银行'
            ,
               '巢湖农村商业银行'
            ,
               '金寨农村商业银行'
            ,
               '安徽定远农村商业银行'
            ,
               '安徽庐江农村商业银行'
            ,
               '安徽马鞍山农村商业银行'
            ,
               '芜湖扬子农村商业银行'
            ,
               '安徽青阳农村商业银行'
            ,
               '合肥科技农村商业银行'
            ,
               '铜陵农村商业银行'
            ,
               '池州九华农村商业银行'
            ,
               '安庆独秀农村商业银行'
            ,
               '安徽肥西农村商业银行'
            ,
               '宣城皖南农村商业银行'
            ,
               '淮南淮河农村商业银行'
            ,
               '安徽桐城农村商业银行'
            ,
               '安徽无为农村商业银行'
            ,
               '滁州皖东农村商业银行'
            ,
               '安徽歙县农村商业银行'
            ,
               '淮北农村商业银行'
            ,
               '阜阳颍东农村商业银行'
            ,
               '安徽南陵农村商业银行'
            ,
               '淮南通商农村商业银行'
            ,
               '安徽泾县农村商业银行'
            ,
               '安徽旌德农村商业银行'
            ,
               '安徽潜山农村商业银行'
            ,
               '安徽繁昌农村商业银行'
            ,
               '安徽石台农村商业银行'
            ,
               '安徽望江农村商业银行'
            ,
               '安徽太湖农村商业银行'
            ,
               '铜陵皖江农村商业银行'
            ,
               '毫州药都农村商业银行'
            ,
               '景德镇农商银行'
            ,
               '新余农商银行'
            ,
               '九江农商银行'
            ,
               '宜春农商银行'
            ,
               '吉安农村商业银行'
            ,
               '赣州农村商业银行'
            ,
               '南昌农村商业银行股份有限公司'
            ,
               '武汉农村商业银行'
            ,
               '广州农村商业银行股份有限公司'
            ,
               '佛山顺德农村商业银行股份有限公司'
            ,
               '东莞农村商业银行股份有限公司'
            ,
               '广东河源农村商业银行股份有限公司'
            ,
               '肇庆端州农村商业银行股份有限公司'
            ,
               '广东阳东农村商业银行股份有限公司'
            ,
               '广东揭阳农村商业银行股份有限公司'
            ,
               '广东揭西农村商业银行股份有限公司'
            ,
               '广西资源农村商业银行股份有限公司'
            ,
               '广西田东农村商业银行股份有限公司'
            ,
               '广西融安农村商业银行股份有限公司'
            ,
               '广西蒙山农村商业银行股份有限公司'
            ,
               '广西田阳农村商业银行股份有限公司'
            ,
               '广西恭城农村商业银行股份有限公司'
            ,
               '广西龙胜农村商业银行股份有限公司'
            ,
               '广西灌阳农村商业银行股份有限公司'
            ,
               '广西昭平农村商业银行股份有限公司'
            ,
               '广西凌云农村商业银行股份有限公司'
            ,
               '重庆农村商业银行股份有限公司'
            ,
               '成都农商银行'
            ,
               '贵阳农村商业银行'
            ,
               '宁夏黄河农村商业银行股份有限公司'
            ,
               '厦门农村商业银行股份有限公司'
            ,
               '青岛农商银行'
            ,
               '深圳农村商业银行'
            ,
               '呼和浩特金谷农村合作银行'
            ,
               '江苏睢宁农村合作银行'
            ,
               '江苏新沂农村合作银行'
            ,
               '江苏灌云农村合作银行'
            ,
               '浙江萧山农村合作银行'
            ,
               '浙江富阳农村合作银行'
            ,
               '浙江桐庐农村合作银行'
            ,
               '浙江温州瓯海农村合作银行'
            ,
               '浙江瑞安农村合作银行'
            ,
               '浙江乐清农村合作银行'
            ,
               '浙江永嘉农村合作银行'
            ,
               '浙江苍南农村合作银行'
            ,
               '浙江平湖农村合作银行'
            ,
               '湖州吴兴农村合作银行'
            ,
               '浙江长兴农村合作银行'
            ,
               '浙江绍兴恒信农村合作银行'
            ,
               '浙江上虞农村合作银行'
            ,
               '浙江嵊州农村合作银行'
            ,
               '浙江金华成泰农村合作银行'
            ,
               '浙江兰溪农村合作银行'
            ,
               '浙江永康农村合作银行'
            ,
               '浙江武义农村合作银行'
            ,
               '浙江江山农村合作银行'
            ,
               '浙江台州椒江农村合作银行'
            ,
               '浙江台州黄岩农村合作银行'
            ,
               '浙江台州路桥农村合作银行'
            ,
               '浙江温岭农村合作银行'
            ,
               '浙江玉环农村合作银行'
            ,
               '浙江天台农村合作银行'
            ,
               '浙江丽水莲都农村合作银行'
            ,
               '安徽霍山农村合作银行'
            ,
               '安徽绩溪农村合作银行'
            ,
               '安徽舒城农村合作银行'
            ,
               '安徽天长农村合作银行'
            ,
               '安徽黟县农村合作银行'
            ,
               '安徽怀远农村合作银行'
            ,
               '安徽广德农村合作银行'
            ,
               '安徽休宁农村合作银行'
            ,
               '安徽长丰农村合作银行'
            ,
               '安徽肥东农村合作银行'
            ,
               '安徽泗县农村合作银行'
            ,
               '安徽东至农村合作银行'
            ,
               '安徽叶集农村合作银行'
            ,
               '芜湖津盛农村合作银行'
            ,
               '安徽岳西农村合作银行'
            ,
               '安徽宿松农村合作银行'
            ,
               '黄山屯溪农村合作银行'
            ,
               '安徽怀宁农村合作银行'
            ,
               '黄山太平农村合作银行'
            ,
               '黄山徽州农村合作银行'
            ,
               '安徽宁国农村合作银行'
            ,
               '安徽郎溪农村合作银行'
            ,
               '安徽和县农村合作银行'
            ,
               '安徽明光农村合作银行'
            ,
               '安徽全椒农村合作银行'
            ,
               '宁波鄞州农村合作银行'
            ,
               '宁波慈溪农村合作银行'
            ,
               '河北省农村信用社联合社'
            ,
               '山西省农村信用社'
            ,
               '内蒙古自治区农村信用社联合社'
            ,
               '辽宁省农村信用社联合社'
            ,
               '黑龙江省农村信用社联合社'
            ,
               '铜山县农村信用合作联社'
            ,
               '徐州市贾汪区农村信用合作联社'
            ,
               '沛县农村信用合作联社'
            ,
               '丰县农村信用合作联社'
            ,
               '洪泽县农村信用合作联社'
            ,
               '灌南县农村信用合作联社'
            ,
               '东海县农村信用合作联社'
            ,
               '泰兴市农村信用合作联社'
            ,
               '滨海县农村信用合作联社'
            ,
               '浙江省农村信用社联合社'
            ,
               '临安市农村信用合作联社'
            ,
               '平阳县农村信用合作联社'
            ,
               '文成县农村信用合作联社'
            ,
               '泰顺县农村信用合作联社'
            ,
               '洞头县农村信用合作联社'
            ,
               '海宁市农村信用合作联社'
            ,
               '海盐县农村信用合作联社'
            ,
               '桐乡市农村信用合作联社'
            ,
               '安吉县农村信用合作联社'
            ,
               '东阳市农村信用合作联社'
            ,
               '浦江县农村信用合作联社'
            ,
               '磐安县农村信用合作联社'
            ,
               '衢州市柯城农村信用合作联社'
            ,
               '衢州市衢江农村信用合作联社'
            ,
               '龙游县农村信用合作联社'
            ,
               '常山县农村信用合作联社'
            ,
               '开化县农村信用合作联社'
            ,
               '临海市农村信用合作联社'
            ,
               '仙居县农村信用合作联社'
            ,
               '三门县农村信用合作联社'
            ,
               '青田县农村信用合作联社'
            ,
               '龙泉市农村信用合作联社'
            ,
               '缙云县农村信用合作联社'
            ,
               '松阳县农村信用合作联社'
            ,
               '景宁县农村信用合作联社'
            ,
               '岱山县农村信用合作联社'
            ,
               '嵊泗县农村信用合作联社'
            ,
               '浙江松阳恒通村镇银行股份有限公司'
            ,
               '建德市农村信用合作联社'
            ,
               '淳安县农村信用合作联社'
            ,
               '枞阳县联社'
            ,
               '涡阳县联社'
            ,
               '蒙城县联社'
            ,
               '利辛县联社'
            ,
               '阜阳市颍泉区联社'
            ,
               '临泉县联社'
            ,
               '庐江县联社'
            ,
               '六安市郊区联社'
            ,
               '寿县联社'
            ,
               '濉溪县联社'
            ,
               '宿州市区联社'
            ,
               '含山县联社'
            ,
               '凤台县联社'
            ,
               '安徽省农村信用社联合社'
            ,
               '福建省农信联社(福建农信网)'
            ,
               '江西省农村信用社'
            ,
               '山东省农村信用社联合社'
            ,
               '湖北省农村信用社'
            ,
               '广东农村信用社'
            ,
               '广西壮族自治区农村信用联社'
            ,
               '四川省农村信用联社'
            ,
               '贵州省农村信用社'
            ,
               '云南省农村信用社联社'
            ,
               '陕西信合'
            ,
               '宁波市市区农村信用合作联社'
            ,
               '北京密云汇丰村镇银行有限责任公司'
            ,
               '北京延庆村镇银行股份有限公司'
            ,
               '北京怀柔融兴村镇银行有限责任公司'
            ,
               '北京大兴九银村镇银行股份有限公司'
            ,
               '北京昌平兆丰村镇银行股份有限公司'
            ,
               '北京大兴华夏村镇银行有限责任公司'
            ,
               '北京顺义银座村镇银行股份有限公司'
            ,
               '北京通州国开村镇银行股份有限公司'
            ,
               '北京门头沟珠江村镇银行'
            ,
               '宝山富民村镇银行'
            ,
               '金山惠民村镇银行'
            ,
               '崇明长江村镇银行'
            ,
               '奉贤浦发村镇银行'
            ,
               '松江民生村镇银行'
            ,
               '浦东江南村镇银行'
            ,
               '浦东建信村镇银行'
            ,
               '闵行上银村镇银行'
            ,
               '嘉定民生村镇银行'
            ,
               '江苏邳州陇海村镇银行'
            ,
               '江苏丰县民丰村镇银行'
            ,
               '江苏沛县汉源村镇银行'
            ,
               '江苏铜山锡州村镇银行'
            ,
               '江苏惠山民泰村镇银行'
            ,
               '江阴浦发村镇银行'
            ,
               '宜兴阳羡村镇银行'
            ,
               '太仓民生村镇银行'
            ,
               '苏州常熟建信村镇银行'
            ,
               '江苏张家港华信村镇银行'
            ,
               '昆山鹿城村镇银行'
            ,
               '江苏武进建信村镇银行'
            ,
               '溧阳浦发村镇银行'
            ,
               '金坛常农商村镇银行'
            ,
               '江苏丹徒蒙银村镇银行'
            ,
               '扬中恒丰村镇银行'
            ,
               '江苏丹阳保得村镇银行'
            ,
               '句容茅山村镇银行'
            ,
               '江苏仪征包商村镇银行'
            ,
               '江苏扬州农村商业银行'
            ,
               '江苏江都吉银村镇银行'
            ,
               '江苏邗江民泰村镇银行'
            ,
               '江苏涟水太商村镇银行'
            ,
               '江苏金湖民泰村镇银行'
            ,
               '江苏洪泽金阳光村镇银行'
            ,
               '江苏盱眙珠江村镇银行'
            ,
               '江苏赣榆通商村镇银行'
            ,
               '江苏灌云民丰村镇银行'
            ,
               '江苏灌南民丰村镇银行'
            ,
               '江苏东海张农商村镇银行'
            ,
               '江苏泗阳东吴村镇银行'
            ,
               '江苏宿豫东吴村镇银行'
            ,
               '江苏泗洪东吴村镇银行'
            ,
               '江苏沭阳东吴村镇银行'
            ,
               '姜堰锡州村镇银行'
            ,
               '江苏泰兴建信村镇银行'
            ,
               '兴化苏南村镇银行'
            ,
               '江苏靖江润丰村镇银行'
            ,
               '江苏东台稠州村镇银行'
            ,
               '阜宁民生村镇银行'
            ,
               '江苏大丰江南村镇银行'
            ,
               '江苏射阳太商村镇银行'
            ,
               '江苏启东珠江村镇银行'
            ,
               '江苏如东融兴村镇银行'
            ,
               '江苏海门建信村镇银行'
            ,
               '江苏南通如皋包商村镇银行'
            ,
               '江苏海安盐海村镇银行'
            ,
               '江苏通州华商村镇银行'
            ,
               '南京六合九银村镇银行'
            ,
               '南京浦口靖发村镇银行'
            ,
               '江苏高淳武家嘴建信村镇银行'
            ,
               '江苏溧水民丰村镇银行'
            ,
               '江苏江宁上银村镇银行'
            ,
               '浙江建德湖商村镇银行'
            ,
               '浙江永嘉恒升村镇银行股份有限公司'
            ,
               '浙江苍南建信村镇银行股份有限公司'
            ,
               '浙江乐清联合村镇银行股份有限公司'
            ,
               '浙江平阳浦发村镇银行股份有限公司'
            ,
               '浙江文成北银村镇银行股份有限公司'
            ,
               '浙江泰顺温银村镇银行股份有限公司'
            ,
               '瑞安市马屿镇汇民农村资金互助社'
            ,
               '浙江平湖工银村镇银行股份有限公司'
            ,
               '浙江嘉善联合村镇银行股份有限公司'
            ,
               '浙江桐乡民泰村镇银行股份有限公司'
            ,
               '平湖市当湖街道新当湖农村资金互助社'
            ,
               '安吉交银村镇银行'
            ,
               '长兴联合村镇银行'
            ,
               '德清县乾元镇德农农村资金互助社'
            ,
               '浙江嵊州瑞丰村镇银行股份有限公司'
            ,
               '浙江新昌浦发村镇银行股份有限公司'
            ,
               '浙江永康农银村镇银行有限责任公司'
            ,
               '浙江磐安婺商村镇银行股份有限公司'
            ,
               '浙江浦江嘉银村镇银行股份有限公司'
            ,
               '浙江兰溪越商村镇银行股份有限公司'
            ,
               '浙江武义建信村镇银行有限责任公司'
            ,
               '浙江龙游义商村镇银行股份有限公司'
            ,
               '浙江常山联合村镇银行股份有限公司'
            ,
               '衢江上银村镇银行'
            ,
               '浙江江山建信村镇银行有限责任公司'
            ,
               '开化通济贷款有限责任公司'
            ,
               '浙江玉环永兴村镇银行有限责任公司'
            ,
               '浙江三门银座村镇银行股份有限公司'
            ,
               '浙江临海湖星村镇银行股份有限公司'
            ,
               '浙江温岭联合村镇银行股份有限公司'
            ,
               '浙江天台民生村镇银行股份有限公司'
            ,
               '浙江青田建信华侨村镇银行'
            ,
               '浙江庆元泰隆村镇银行'
            ,
               '浙江缙云杭银村镇银行股份有限公司'
            ,
               '浙江龙泉民泰村镇银行股份有限公司'
            ,
               '浙江丽水莲都建信村镇银行'
            ,
               '缙云县五云镇欣禾农村资金互助社'
            ,
               '浙江岱山稠州村镇银行股份有限公司'
            ,
               '浙江舟山普陀稠州村镇银行股份有限公司'
            ,
               '浙江淳安建信村镇银行有限责任公司'
            ,
               '浙江义乌联合村镇银行股份有限公司'
            ,
               '浙江德清湖商村镇银行股份有限公司'
            ,
               '浙江余杭德商村镇银行股份有限公司'
            ,
               '浙江遂昌富民村镇银行股份有限公司'
            ,
               '浙江秀洲德商村镇银行股份有限公司'
            ,
               '浙江萧山湖商村镇银行股份有限公司'
            ,
               '浙江诸暨联合村镇银行股份有限公司'
            ,
               '浙江绍兴县联合村镇银行股份有限公司'
            ,
               '安徽长丰科源村镇银行'
            ,
               '安徽凤阳利民村镇银行'
            ,
               '安徽桐城江淮村镇银行'
            ,
               '安徽当涂新华村镇银行'
            ,
               '安徽繁昌建信村镇银行'
            ,
               '安徽黄山金桥村镇银行'
            ,
               '安徽舒城正兴村镇银行'
            ,
               '安徽裕安盛平村镇银行'
            ,
               '安徽肥西石银村镇银行'
            ,
               '安徽绩溪农银村镇银行'
            ,
               '安徽无为徽银村镇银行'
            ,
               '安徽铜陵铜源村镇银行'
            ,
               '安徽泾县铜源村镇银行'
            ,
               '安徽郎溪新华村镇银行'
            ,
               '淮南凤台通商村镇银行'
            ,
               '安徽庐江惠民村镇银行'
            ,
               '安徽含山惠民村镇银行'
            ,
               '安徽肥东湖星村镇银行'
            ,
               '安徽枞阳泰业村镇银行'
            ,
               '安徽休宁大地村镇银行'
            ,
               '安徽青阳九华村镇银行'
            ,
               '安徽和县新华村镇银行'
            ,
               '安徽定远民丰村镇银行'
            ,
               '安徽潜山江淮村镇银行'
            ,
               '安徽歙县嘉银村镇银行'
            ,
               '安徽望江新华村镇银行'
            ,
               '安徽宿松民丰村镇银行'
            ,
               '安徽五河永泰村镇银行'
            ,
               '安徽宿州淮海村镇银行'
            ,
               '安徽明光民丰村镇银行'
            ,
               '安徽全椒中银富登村镇银行'
            ,
               '安徽来安中银富登村镇银行'
            ,
               '芜湖泰寿村镇银行'
            ,
               '怀远本富村镇银行'
            ,
               '灵璧本富村镇银行'
            ,
               '宁国民生村镇银行'
            ,
               '池州贵池民生村镇银行'
            ,
               '天长民生村镇银行'
            ,
               '太湖县小池银燕农村资金互助社'
            ,
               '澳洲联邦银行村镇银行有限责任公司'
            ,
               '珠海横琴村镇银行'
            ,
               '始兴大众村镇银行'
            ,
               '东源泰业村镇银行'
            ,
               '中山小榄村镇银行'
            ,
               '广东恩平汇丰村镇银行'
            ,
               '惠州仲恺东盈村镇银行'
            ,
               '广东澄海潮商村镇银行'
            ,
               '东莞长安村镇银行'
            ,
               '佛山高明顺银村镇银行'
            ,
               '三水珠江村镇银行'
            ,
               '广州番禺新华村镇银行'
            ,
               '德庆华润村镇银行'
            ,
               '梅县客家村镇银行'
            ,
               '鹤山珠江村镇银行'
            ,
               '中山东凤珠江村镇银行'
            ,
               '广州增城长江村镇银行'
            ,
               '广西横县桂商村镇银行股份有限公司'
            ,
               '武鸣漓江村镇银行有限公司'
            ,
               '广西融水元宝山村镇银行股份有限公司'
            ,
               '广西柳江柳银村镇银行股份有限公司'
            ,
               '广西鱼峰信合村镇银行有限责任公司'
            ,
               '广西兴安民兴村镇银行股份有限公司'
            ,
               '桂林国民村镇银行有限责任公司'
            ,
               '灵川深通村镇银行有限责任公司'
            ,
               '广西藤县桂银村镇银行股份有限公司'
            ,
               '岑溪市北部湾村镇银行有限责任公司'
            ,
               '合浦国民村镇银行有限责任公司'
            ,
               '东兴国民村镇银行有限责任公司'
            ,
               '灵山泰业村镇银行股份有限公司'
            ,
               '广西平南桂银村镇银行股份有限公司'
            ,
               '广西桂平桂银村镇银行股份有限公司'
            ,
               '广西容县桂银村镇银行股份有限公司'
            ,
               '广西北流柳银村镇银行股份有限公司'
            ,
               '广西兴业柳银村镇银行股份有限公司'
            ,
               '广西博白柳银村镇银行股份有限公司'
            ,
               '广西陆川柳银村镇银行股份有限公司'
            ,
               '平果国民村镇银行有限责任公司'
            ,
               '田东北部湾村镇银行有限责任公司'
            ,
               '田阳兴阳村镇银行有限责任公司'
            ,
               '宜州深通村镇银行有限责任公司'
            ,
               '扶绥深通村镇银行有限责任公司'
            ,
               '重庆大足汇丰村镇银行有限责任公司'
            ,
               '开县泰业村镇银行股份有限公司'
            ,
               '重庆梁平澳新村镇银行有限责任公司'
            ,
               '重庆璧山工银村镇银行有限责任公司'
            ,
               '重庆丰都汇丰村镇银行有限责任公司'
            ,
               '重庆巴南浦发村镇银行股份有限公司'
            ,
               '潼南民生村镇银行股份有限公司'
            ,
               '綦江民生村镇银行股份有限公司'
            ,
               '黔江区城东诚信农村资金互助社'
            ,
               '重庆荣昌汇丰村镇银行有限责任公司'
            ,
               '重庆市大渡口融兴村镇银行有限责任公司'
            ,
               '重庆云阳恒丰村镇银行股份有限公司'
            ,
               '重庆南川石银村镇银行股份有限公司'
            ,
               '重庆市江津区白沙镇明星农村资金互助社'
            ,
               '重庆北碚稠州村镇银行股份有限公司'
            ,
               '重庆江津石银村镇银行股份有限公司'
            ,
               '重庆江北恒丰村镇银行股份有限公司'
            ,
               '重庆市武隆融兴村镇银行有限责任公司'
            ,
               '重庆忠县稠州村镇银行股份有限公司'
            ,
               '重庆北碚花旗贷款有限责任公司'
            ,
               '重庆渝北银座村镇银行股份有限公司'
            ,
               '重庆黔江银座村镇银行股份有限公司'
            ,
               '重庆九龙坡民泰村镇银行股份有限公司'
            ,
               '重庆市沙坪坝融兴村镇银行有限公司'
            ,
               '重庆市酉阳融兴村镇银行有限责任公司'
            ,
               '重庆彭水民泰村镇银行股份有限公司'
            ,
               '重庆万州建信村镇银行有限责任公司'
            ,
               '乐山嘉州民富村镇银行'
            ,
               '内江兴隆村镇银行'
            ,
               '新建珠江村镇银行'
            ,
               '彭山珠江村镇银行'
            ,
               '广汉珠江村镇银行'
            ,
               '江油华夏村镇银行'
            ,
               '巴中国开村镇银行'
            ,
               '新都桂城村镇银行'
            ,
               '郫县国开村镇银行'
            ,
               '广元贵商村镇银行'
            ,
               '蒲江民富村镇银行'
            ,
               '名山锦程村镇银行'
            ,
               '龙泉驿稠州村镇银行'
            ,
               '崇州上银村镇银行'
            ,
               '仁寿民富村镇银行'
            ,
               '广元包商贵民村镇银行'
            ,
               '什邡思源村镇银行'
            ,
               '都江堰金都村镇银行'
            ,
               '绵竹浦发村镇银行'
            ,
               '双流诚民村镇银行'
            ,
               '泸县元通村镇银行'
            ,
               '西昌金信村镇银行'
            ,
               '大竹渝农商村镇银行'
            ,
               '夹江昆仑村镇银行'
            ,
               '广安恒丰村镇银行'
            ,
               '金堂汇金村镇银行'
            ,
               '资阳民生村镇银行'
            ,
               '自贡农商村镇银行'
            ,
               '宜宾兴宜村镇银行'
            ,
               '遂宁安居村镇银行'
            ,
               '四川仪陇惠民村镇银行'
            ,
               '四川仪陇惠民贷款公司'
            ,
               '平武富民贷款公司'
            ,
               '苍溪益民资金互助社'
            ,
               '四川北川富民村镇银行'
            ,
               '邛崃国民村镇银行'
            ,
               '大邑交银兴民村镇银行'
            ,
               '彭州民生村镇银行'
            ,
               '宣汉诚民村镇银行'
            ,
               '贵阳花溪建设村镇银行'
            ,
               '息烽包商黔隆村镇银行'
            ,
               '贵阳白云德信村镇银行'
            ,
               '仁怀蒙银村镇银行'
            ,
               '平坝鼎立村镇银行'
            ,
               '龙里国丰村镇银行'
            ,
               '都匀融通村镇银行'
            ,
               '黄平振兴村镇银行'
            ,
               '铜仁丰源村镇银行'
            ,
               '毕节发展村镇银行'
            ,
               '织金惠民村镇银行'
            ,
               '黔西花都村镇银行'
            ,
               '水城蒙银村镇银行'
            ,
               '盘县万和村镇银行'
            ,
               '兴义万丰村镇银行'
            ,
               '六盘水钟山凉都村镇银行'
            ,
               '施秉金鼎村镇银行'
            ,
               '绥阳黔北村镇银行'
            ,
               '文山民丰村镇银行有限公司'
            ,
               '玉溪红塔区兴和村镇银行股份有限公司'
            ,
               '昭通昭阳富滇村镇银行股份有限公司'
            ,
               '曲靖惠民村镇银行股份有限公司'
            ,
               '楚雄禄丰龙城富滇村镇银行股份有限公司'
            ,
               '楚雄兴彝村镇银行股份有限公司'
            ,
               '丽江古城区富滇村镇银行'
            ,
               '大理海东村镇银行'
            ,
               '昆明呈贡华夏村镇银行'
            ,
               '曲靖富源富滇村镇银行'
            ,
               '普洱民生村镇银行股份有限公司'
            ,
               '景洪民生村镇银行股份有限公司'
            ,
               '嵩明沪农商村镇银行'
            ,
               '个旧沪农商村镇银行'
            ,
               '弥勒沪农商村镇银行'
            ,
               '开远沪农商村镇银行'
            ,
               '瑞丽沪农商村镇银行'
            ,
               '临沧临翔沪农商村镇银行'
            ,
               '保山隆阳沪农商村镇银行'
            ,
               '建水沪农商村镇银行'
            ,
               '蒙自沪农商村镇银行'
            ,
               '云南安宁稠州村镇银行'
            ,
               '慈溪民生村镇银行股份有限公司'
            ,
               '宁波镇海中银富登村镇银行有限公司'
            ,
               '宁海中银富登村镇银行有限公司'
            ,
               '厦门同安农银村镇银行有限责任公司'
            ,
               '青岛即墨北农商村镇银行'
            ,
               '青岛胶南海汇村镇银行'
            ,
               '青岛莱西元泰村镇银行'
            ,
               '青岛平度惠民村镇银行'
            ,
               '青岛胶州中成村镇银行'
            ,
               '青岛城阳珠江村镇银行'
            ,
               '青岛崂山交银村镇银行'
            ,
               '深圳宝安融兴村镇银行'
            ,
               '深圳龙岗鼎业村镇银行'
            ,
               '深圳福田银座村镇银行'
            ,
               '深圳南山宝生村镇银行'
            ,
               '深圳宝安桂银村镇银行'
            ,
               '深圳龙岗国安村镇银行'
            ,
               '深圳光明沪农商村镇银行'
            ,
               '荷兰银行(中国)有限公司'
            ,
               '企业银行(中国)有限公司'
            ,
               '宁波国际银行'
            ,
               '东方汇理银行(中国)有限公司'
            ,
               '中信嘉华银行(中国)有限公司'
            ,
               '外换银行(中国)有限公司'
            ,
               '摩根大通银行(中国)有限公司'
            ,
               '友利银行(中国)有限公司'
            ,
               '韩亚银行(中国)有限公司'
            ,
               '德意志银行(中国)有限公司'
            ,
               '新韩银行(中国)有限公司'
            ,
               '法国兴业银行(中国)有限公司'
            ,
               '蒙特利尔银行(中国)有限公司'
            ,
               '瑞士银行(中国)有限公司'
            ,
               '国民银行(中国)有限公司'
            ,
               '汇丰中国'
            ,
               '渣打中国'
            ,
               '花旗中国'
            ,
               '东亚中国'
            ,
               '瑞穗中国'
            ,
               '恒生中国'
            ,
               '星展中国'
            ,
               '三菱中国'
            ,
               '华侨中国'
            ,
               '南商中国'
            ,
               '大华中国'
            ,
               '法巴中国'
            ,
               '三井中国'
            ,
               '汇理中国'
            ,
               '盘谷中国'
            ,
               '苏皇中国'
            ,
               '澳新中国'
            ,
               '华一银行'
            ,
               '华美中国'
            ,
               '正信银行'
            ,
               '浦发硅谷银行'
            ,
               '首都银行(中国)有限公司'
            ,
               '摩根士丹利国际银行(中国)有限公司'
            ,
               '协和银行有限公司'
            ,
               '新联商业银行'
            ,
               '华商银行'
            ,
               '永亨银行(中国)有限公司'
            ,
               '大新银行(中国)有限公司'
               ]
        return random.sample(app, 1)[0]

    def 行业(self):
        列表 = ['农业',
              '林业',
              '牧业',
              '渔业',
              '农业',
              '林业',
              '畜牧业',
              '渔业',
              '相关辅助活动',
              '采矿',
              '煤炭开采',
              '洗选业',
              '石油和天然气开采',
              '黑色金属采矿选业',
              '有色金属采矿选业',
              '非金属采矿选业',
              '开采专业及其辅助性活动',
              '制造业',
              '农副食品加工',
              '食品制造业',
              '酒',
              '饮料和精致茶制造业',
              '烟草制品业',
              '纺织业',
              '纺织服装',
              '服饰业',
              '皮革',
              '毛皮',
              '羽毛以及制品和制造业',
              '木材加工和木',
              '竹',
              '藤',
              '棕和制鞋业',
              '家具制造业',
              '造纸和纸制品业',
              '印刷和纸制品业',
              '文教',
              '公美',
              '体育',
              '娱乐用品制造业',
              '石油',
              '煤炭以及其他原料加工',
              '化学原料和化学制品制造业',
              '医药制造业',
              '化学纤维制造业',
              '橡胶和塑料制品',
              '非金属矿物制造',
              '黑色金属冶炼制造',
              '有色金属冶炼制造',
              '金属制品业',
              '通用设备制造业',
              '专用设备制造业',
              '汽车制造业',
              '铁路',
              '船舶',
              '航空航天以及其他运输设备制造业',
              '电器机械和器材制造业',
              '计算机',
              '通信和其他电子设备制造业',
              '仪器仪表制造业',
              '其他制造业',
              '废弃资源综合利用业',
              '金属制品',
              '机械和设备修理',
              '能源行业',
              '电能',
              '热能',
              '电力',
              '热力生产和供应业',
              '燃气生产和供应业',
              '水的生产和供应业',
              '建筑行业',
              '房屋铸造业',
              '土木工程建筑业',
              '建筑安装业',
              '建筑装饰',
              '装修和其他建筑业',
              '批发',
              '零售业',
              '交通运输业',
              '铁路交通运输',
              '道路交通运输',
              '水上交通运输',
              '航空交通运输',
              '管道运输业',
              '多式联运和运输代理业',
              '装卸搬运和仓储业',
              '邮政业',
              '住宿和餐饮业',
              '信息传输',
              '软件和信息技术服务业',
              '电信',
              '广播电视和卫星传输服务',
              '互联网和相关服务',
              '软件和信息技术服务',
              '金融业',
              '货币金融服务',
              '货币市场服务',
              '保险业',
              '其他金融业',
              '房地产业',
              '租赁和商业服务业',
              '科学研究和技术服务',
              '研究和实验发展',
              '专业技术服务',
              '技术推广和应用服务业',
              '水利',
              '环境和公共设施管理',
              '水利管理业',
              '生态保护和环境治理业',
              '公共设施管理业',
              '土地管理业',
              '居民服务',
              '修理和其他服务业',
              '居民服务业',
              '机动车',
              '电子产品和日用产品修理业',
              '其他服务业',
              '教育',
              '卫生和社会服务',
              '文化',
              '体育',
              '娱乐业',
              '新闻和出版业',
              '广播',
              '电视',
              '电影和录音制作业',
              '文化艺术业',
              '体育',
              '娱乐业',
              '公共管理',
              '社会保障和社会组织',
              '中国共产党机关',
              '国家机关',
              '任命政协',
              '民主党派',
              '社会保障',
              '群众团体',
              '社会团体和其他成员组织',
              '集成群众自治组织和其他组织',
              '国际机构', ]
        return random.sample(列表, 1)[0]

    def 性别(self):
        列表 = ['男', '女']
        return random.sample(列表, 1)[0]

    def 随机_字符串(self, 长度=16):
        trs = ''
        for i in range(100000):
            trs = trs + 'zyxwvutsrqponmlkjihgfedcba1234567890'
        strs = random.sample(trs, 长度)
        strp = ''.join([i for i in strs])
        return strp

    def 随机_数值(self, 长度=4):
        strs = random.randint(长度)
        return str(strs)

    def 随机_小数(self, 整数=4, 小数=2):
        strs = random.uniform(整数, 小数)
        return str(strs)

    def 随机_乱码(self, 长度=4):
        strs = random.sample(
            r'abcdefghijklmnopqrstuvwxyz1234567890QWERTYUIOPASDFGHJKLZXCVBNM~!@#$%^&*()_+{};][]\\\':"<>?.,/', 长度)
        strp = ''.join([i for i in strs])
        return strp

    def 随机_用户名(self, 长度=16):
        strs = random.sample('zyxwvutsrqponmlkjihgfedcba1234567890', 长度)
        strp = ''.join([i for i in strs])
        return strp

    # 随机姓名1男2女0随机
    def 姓名(self, sex=2):
        if sex == 2:
            return str(self.fake.name())
        if sex == 0:
            return str(self.fake.name_female())
        if sex == 1:
            return str(self.fake.name_male())

    # 随机QQ号1整数2字符串
    def QQ(self, type=2, 长度=10):
        if 长度 <= 10 and 长度 >= 6:
            if type == 2:
                return str(random.randint(100000, 9999999999))[0:长度]
            if type == 1:
                return int(str(random.randint(100000, 9999999999))[0:长度])
        else:
            return "QQ号长度只有6-10位"

    # 随机邮箱地址
    def 邮箱(self, 类型='普通'):
        if 类型 == '普通':
            return self.fake.ascii_email()
        if 类型 == '企业':
            return self.fake.company_email()
        if 类型 == '安全':
            return self.fake.safe_email()
        if 类型 == 'QQ':
            qq = random.randint(100000, 9999999999)
            return str(qq) + "@qq.com"
        if 类型 == '谷歌':
            random_str = ''.join(random.sample(string.ascii_letters + string.digits, random.randint(8, 16)))
            return str(random_str) + "@gmail.com"
        if 类型 == '网易':
            random_str = ''.join(random.sample(string.ascii_letters + string.digits, random.randint(8, 16)))
            return str(random_str) + "@163.com"

    # 随机手机号1整数2字符串
    def 手机号(self, type=2):
        if type == 2:
            return str(self.fake.phone_number())
        if type == 1:
            return int(self.fake.phone_number())

    # 随机公司名称
    def 公司名(self, ):
        return self.fake.company()

    # 随机地址
    def 地址(self, ):
        return self.fake.address()[:-7]

    # 随机地址邮编1整数2字符串
    def 邮编(self, type=2):
        if type == 2:
            return str(self.fake.address()[-6:])
        if type == 1:
            return int(self.fake.address()[-6:])

    # 获取指定类型的时间
    def 时间(self, 节点='现在'):
        now = datetime.datetime.now()
        if 节点 == '现在':
            return str(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
        if 节点 == '本日' or 节点 == '今天':
            a = '{}'.format(datetime.datetime.now())[:-16] + " 00:00:01"
            b = '{}'.format(datetime.datetime.now())[:-16] + " 23:59:59"
            data = {
                '开始': a,
                '结束': b,
            }
            return data
        if 节点 == '本周' or 节点 == '这周':
            this_week_start = now - timedelta(days=now.weekday())
            this_week_end = now + timedelta(days=6 - now.weekday())
            a = '{}'.format(this_week_start)[:-16] + " 00:00:01"
            b = '{}'.format(this_week_end)[:-16] + " 23:59:59"
            data = {
                '开始': a,
                '结束': b,
            }
            return data
        if 节点 == '本月' or 节点 == '这月':
            this_month_start = datetime.datetime(now.year, now.month, 1)
            # this_month_end = datetime.datetime(now.year, now.month + 1, 1) - timedelta(days=1) + datetime.timedelta(hours=23, minutes=59, seconds=59)
            this_month_end = datetime.datetime(now.year, now.month, calendar.monthrange(now.year, now.month)[1])
            a = '{}'.format(this_month_start)  # [:-16] + "  00:00:00"
            b = '{}'.format(this_month_end)  # [:-16] + "  24:59:59"
            # today = datetime.datetime.today()
            monthRange = calendar.monthrange(datetime.datetime.today().year, datetime.datetime.today().month)[1]
            data = {
                '开始': a,
                '结束': b,
                '天数': int(monthRange)
            }
            return data
        if 节点 == '本季' or 节点 == '这季':
            month = (now.month - 1) - (now.month - 1) % 3 + 1
            this_quarter_start = datetime.datetime(now.year, month, 1)
            this_quarter_end = datetime.datetime(now.year, month + 3, 1) - timedelta(days=1) + datetime.timedelta(
                hours=23, minutes=59, seconds=59)

            a = '{}'.format(this_quarter_start)  # [:-16] + "  00:00:00"
            b = '{}'.format(this_quarter_end)  # [:-16] + "  24:59:59"
            data = {
                '开始': a,
                '结束': b,
            }
            return data
        if 节点 == '本年' or 节点 == '今年':
            this_year_start = datetime.datetime(now.year, 1, 1)
            this_year_end = datetime.datetime(now.year + 1, 1, 1) - timedelta(days=1) + datetime.timedelta(hours=23,
                                                                                                           minutes=59,
                                                                                                           seconds=59)

            a = '{}'.format(this_year_start)  # [:-16] + "  00:00:00"
            b = '{}'.format(this_year_end)  # [:-16] + "  24:59:59"
            data = {
                '开始': a,
                '结束': b,
            }
            return data
        if 节点 == '昨日' or 节点 == '昨天':
            yesterday = now - timedelta(days=1)
            a = '{}'.format(yesterday)[:-16] + "  00:00:00"
            b = '{}'.format(yesterday)[:-16] + "  24:59:59"
            data = {
                '开始': a,
                '结束': b,
            }
            return data
        if 节点 == '明日' or 节点 == '明天':
            tomorrow = now + timedelta(days=1)
            a = '{}'.format(tomorrow)[:-16] + "  00:00:00"
            b = '{}'.format(tomorrow)[:-16] + "  24:59:59"
            data = {
                '开始': a,
                '结束': b,
            }
            return data
        if 节点 == '上周' or 节点 == '上个星期' or 节点 == '上星期':
            last_week_start = now - timedelta(days=now.weekday() + 7)
            last_week_end = now - timedelta(days=now.weekday() + 1)
            a = '{}'.format(last_week_start)[:-16] + "  00:00:00"
            b = '{}'.format(last_week_end)[:-16] + "  24:59:59"
            data = {
                '开始': a,
                '结束': b,
            }
            return data
        if 节点 == '上月' or 节点 == '上个月' or 节点 == '前一个月':
            this_month_start = datetime.datetime(now.year, now.month, 1)
            this_month_end = datetime.datetime(now.year, now.month + 1, 1) - timedelta(days=1) + datetime.timedelta(
                hours=23, minutes=59, seconds=59)
            last_month_end = this_month_start - timedelta(days=1) + datetime.timedelta(hours=23, minutes=59, seconds=59)
            last_month_start = datetime.datetime(last_month_end.year, last_month_end.month, 1)
            a = '{}'.format(last_month_start)
            b = '{}'.format(last_month_end)
            data = {
                '开始': a,
                '结束': b,
            }
            return data
        if 节点 == '上季' or 节点 == '上个季度' or 节点 == '上个季':
            month = (now.month - 1) - (now.month - 1) % 3 + 1
            this_quarter_start = datetime.datetime(now.year, month, 1)
            this_quarter_end = datetime.datetime(now.year, month + 3, 1) - timedelta(days=1) + datetime.timedelta(
                hours=23, minutes=59, seconds=59)
            last_quarter_end = this_quarter_start - timedelta(days=1) + datetime.timedelta(hours=23, minutes=59,
                                                                                           seconds=59)
            last_quarter_start = datetime.datetime(last_quarter_end.year, last_quarter_end.month - 2, 1)
            a = '{}'.format(last_quarter_start)
            b = '{}'.format(last_quarter_end)
            data = {
                '开始': a,
                '结束': b,
            }
            return data
        if 节点 == '上年' or 节点 == '去年' or 节点 == '上一年':
            this_year_start = datetime.datetime(now.year, 1, 1)
            this_year_end = datetime.datetime(now.year + 1, 1, 1) - timedelta(days=1) + datetime.timedelta(hours=23,
                                                                                                           minutes=59,
                                                                                                           seconds=59)
            last_year_end = this_year_start - timedelta(days=1) + datetime.timedelta(hours=23, minutes=59, seconds=59)
            last_year_start = datetime.datetime(last_year_end.year, 1, 1)
            a = '{}'.format(last_year_start)
            b = '{}'.format(last_year_end)
            data = {
                '开始': a,
                '结束': b,
            }
            return data

    # 输出一段文本,用于描述或者备注
    def 描述(self, min=25):
        return (self.fake.paragraph() + self.fake.paragraph() + self.fake.paragraph() + self.fake.paragraph())[:min]

    # 输出一个词语
    def 词语(self, ):
        return self.fake.word()

    # 输出一句话,可指定长度
    def 标题(self, min=6, max=8):
        if min >= 6 and max <= 18:
            return (((self.fake.sentence())[:-1]) + (self.fake.sentence()[:-1]))[:max]

    # 输出一个随机网址
    def 网址(self, ):
        return self.fake.image_url()

    # 输出一个ip地址
    def ip地址(self, x=20):
        strs = ''
        for i in range(1, x):
            strs = strs + self.fake.ipv4() + '\n'
        strs = strs + self.fake.ipv4()
        return strs

    # 输出一个价格
    def 价格(self, min=1, max=100000):
        return str(random.randint(min, max))

    # 输出一个根据时间生成的编号
    def 编号(self, ):
        return (str(time.time())[:10])

    def 语言(self, ):
        return str(self.person.language())

    def 地区(self, ):
        return str(self.person.nationality())

    def 职位(self, ):
        return str(self.person.occupation())

    def 姓氏(self, ):
        return str(self.person.surname())

    def 大学(self, ):
        return str(self.person.university())

    def 菜品(self, ):
        return str(self.food.dish())

    def 饮料(self, ):
        return str(self.food.drink())

    def 水果(self, ):
        return str(self.food.fruit())

    def 调料(self, ):
        return str(self.food.spices())

    def 蔬菜(self, ):
        return str(self.food.vegetable())

    def 城市(self, ):
        return str(self.address.city())

    def 五大洲(self, ):
        return str(self.address.continent())

    def 世界地区(self, ):
        return str(self.address.country('name'))

    def 城市缩写(self, ):
        return str(self.address.state('abbr'))

    def 地点(self, ):
        return str(self.address.street_name())

    def 中国企业(self, ):
        return str(self.business.company())

    def 星期几(self, ):
        return str(self.datetime.day_of_week())

    def 几月份(self, ):
        return str(self.datetime.month())

    def 化学元素(self, ):
        return str(self.science.chemical_element())

    def 形容颜色(self, ):
        return str(self.text.color())

    def 形容词(self, ):
        return str(self.text.level())

    def 优美短句(self, ):
        return str(self.text.quote())

    def 历史短句(self, ):
        return str(self.text.text())

    def 优美的中国话(self, ):
        textf = [
            '逗比',
            '屌丝',
            '傻逼',
            '尼玛',
            '你妹',
            '妈蛋',
            '小婊砸',
            '草泥马',
        ]
        return str(random.choice(textf))

    def 名词(self, ):
        return str(self.text.word())


class tool_api:
    def __init__(self,=1920,=1080, 文件=None, yapi地址='http://api.fengxing88.com/'):
        self.当前绝对路径 = yapi地址
        self.文件 = 文件
        self.= 高
        self.=def str_md5(self, singt):
        m = hashlib.md5()
        m.update(singt.encode("utf8"))
        return str(m.hexdigest())

    def HAR转请求(self, har):
        apps = har
        请求地址 = apps['log']['entries'][0]['request']['url']
        请求方式 = 'get'
        请求头 = {}
        cookie = {}
        请求体 = apps['log']['entries'][0]['request']['postData']['text']
        for i1 in apps['log']['entries'][0]['request']['headers']:
            if i1['name'] not in ['Host', 'User-Agent', 'Accept', 'Accept-Language', 'Accept-Encoding', 'Content-Length', 'Origin', 'Referer', 'Connection', ]:
                请求头[i1['name']] = i1['value']
        for i2 in apps['log']['entries'][0]['request']['cookies']:
            cookie[i2['name']] = i2['value']
        if apps['log']['entries'][0]['request']['method'] == 'POST':
            请求方式 = 'post'
        if apps['log']['entries'][0]['request']['method'] == 'GET':
            请求方式 = 'get'
        aa = f'''
        header ={请求头}
        date ={请求体}
        cookei={cookie}
        r = requests.{请求方式}('{请求地址}', json=date, headers=header,cookies=cookei)
        r.encoding = 'utf-8'
        output = json.loads(r.text)
        print(output)
        '''
        return aa

    def yapi转请求(self, token, 接口id, 用户='lao123'):
        url = f'{self.yapi地址}api/interface/get?id={接口id}'
        headers = {'Cookie': token}

        r = requests.get(url, headers=headers)
        output = json.loads(r.text)

        # print(json.dumps(output, indent=4, sort_keys=False, ensure_ascii=False))
        路径 = output['data']['path']
        名称 = output['data']['title']
        创建 = output['data']['username']
        方式 = output['data']['method']
        参数列表 = []
        if 'req_body_form' in output['data']:

            for i1 in output['data']['req_body_form']:
                参数 = {
                    '参数名称': '',
                    '参数类型': '',
                    '是否必须': '',
                    '默认参值': '',
                    '备注信息': '',
                }

                if 'name' in i1:
                    参数['参数名称'] = i1['name']
                if 'type' in i1:
                    参数['参数类型'] = i1['type']
                if 'required' in i1:
                    if str(i1['required']) == '0':
                        参数['是否必须'] = '否'
                    else:
                        参数['是否必须'] = '是'
                if 'default' in i1:
                    参数['默认参值'] = i1['default']
                if 'desc' in i1:
                    参数['备注信息'] = i1['desc']

                参数列表.append(参数)

        前括号 = '{\n'
        请求体 = ''
        后括号 = '        }'

        for i1 in 参数列表:
            请求体 += f"            '{i1['参数名称']}': '{i1['默认参值']}',      #备注:{i1['备注信息']} | 类型:{i1['参数类型']} | 必填:{i1['是否必须']}\n"

        app = f'''
        # 测试用例
        def test_001_{名称}_(self):
            """{用户}@接口创建人:{创建}"""

            data = {前括号}{请求体}{后括号}

            returs = self.http.{方式}('{路径}', data)
            self.assertTrue(returs['msg'] in ['success',], msg='请求失败')
        '''
        return app

    def 读表(self, 栏位):
        表格文件 = openpyxl.load_workbook(self.文件)
        所有工作表 = 表格文件.sheetnames
        当前工作表 = 表格文件[所有工作表[int(栏位) - 1]]
        print(当前工作表)
        最大行数 = 当前工作表.max_row
        最大列数 = 当前工作表.max_column
        返回数据 = []
        forin range(最大行数):
            if== 0:
                头部 = []
                forin range(最大列数):= 当前工作表.cell(+ 1,+ 1).value
                    头部.append()
            else:
                身体 = {}
                forin range(最大列数):= 当前工作表.cell(+ 1,+ 1).value
                    身体[头部[]] = 值
                返回数据.append(身体)
        return 返回数据

        # for 列 in range(最大列数):
        #     for 行 in range(最大行数):
        #
        #
        # for 行 in range(最大行数):
        #     单行值={}
        #     for 列 in range(最大列数):
        #         值=当前工作表.cell(行+1, 列+1).value
        #     print(行+1)
        #
        #
        # print()
        # # 获取当前活动表
        # current_当前工作表 = 表格文件.active
        # # 获取当前活动表名称
        # current_name = 当前工作表.title
        # # 通过名字访问Cell对象, 通过value属性获取值
        # a1 = 当前工作表['A1'].value
        # # 通过行和列确定数据
        # a12 = 当前工作表.cell(row=1, column=2).value
        # # 获取列字母
        # column_name = openpyxl.utils.cell.get_column_letter(1)
        # # 将列字母转为数字, 参数忽略大小写
        # column_name_num = openpyxl.utils.cell.column_index_from_string('a')
        # # 获取一列数据, 当前工作表.iter_rows() 获取所有的行

    def 写表(self, 栏位, 数据):
        表格文件 = openpyxl.load_workbook(self.文件)
        所有工作表 = 表格文件.sheetnames
        当前工作表 = 表格文件[所有工作表[int(栏位) - 1]]
        最大行数 = 当前工作表.max_row
        forin range(最大行数):
            当前工作表.delete_rows(+ 1)
        x = 1
        for 内容 in 数据:

            if x == 1:

                y = 1
                for 名称1 in 内容:
                    当前工作表.cell(1, y).value = str(名称1)
                    y = y + 1

                y = 1
                for 名称2 in 内容:
                    当前工作表.cell(2, y).value = 内容[名称2]
                    y = y + 1

                x = x + 2

            else:
                y = 1
                for 名称 in 内容:
                    当前工作表.cell(x, y).value = 内容[名称]
                    y = y + 1
                x = x + 1

        表格文件.save(self.文件)

    def 修改图片大小(self, 文件, 类型='png'):
        img = Image.open(文件)
        out = img.resize((self., self.), Image.ANTIALIAS)  # resize image with high-quality
        out.save(文件, 类型)

    def 搜狗(self, 搜索关键词, 存储地址, 存储页数):
        filePath = 存储地址 + '\\' + 搜索关键词
        if not os.path.exists(filePath):
            os.makedirs(filePath)

        # 获取cookie
        初始地址 = f"https://pic.sogou.com/pics?query={搜索关键词}"
        初始请求头 = {
            "Host": "pic.sogou.com",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0",
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
            "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
            "Accept-Encoding": "gzip, deflate, br",
            "Connection": "keep-alive",
            "Upgrade-Insecure-Requests": "1",
            "Sec-Fetch-Dest": "document",
            "Sec-Fetch-Mode": "navigate",
            "Sec-Fetch-Site": "none",
            "Sec-Fetch-User": "?1",
        }
        初始请求 = requests.get(初始地址, headers=初始请求头)
        错乱字符串cookies = str(初始请求.cookies)

        # 整理cookies信息
        IPLOC = re.compile(r'IPLOC=.{5,40} for').findall(错乱字符串cookies)[0][:-4]
        SNUID = re.compile(r'SNUID=.{10,40} for').findall(错乱字符串cookies)[0][:-4]
        SUV = re.compile(r'SUV=.{10,40} for').findall(错乱字符串cookies)[0][:-4]
        ABTEST = re.compile(r'ABTEST=.{10,40} for').findall(错乱字符串cookies)[0][:-4]

        # 开始正式下载
        编号 = 1
        for i1 in range(存储页数):
            页码 = self.分页 * (i1 + 1)
            正式地址 = f"https://pic.sogou.com/napi/pc/searchList?mode=1&start={页码}&xml_len={40}&query={搜索关键词}"
            正式请求头 = {
                "Host": "pic.sogou.com",
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0",
                "Accept": "application/json, text/plain, */*",
                "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
                "Accept-Encoding": "gzip, deflate, br",
                "Connection": "keep-alive",
                "Cookie": f"{SNUID}; {IPLOC}; {SUV}; {ABTEST}",
                "Sec-Fetch-Dest": "empty",
                "Sec-Fetch-Mode": "cors",
                "Sec-Fetch-Site": "same-origin",
            }
            正式请求 = requests.get(正式地址, headers=正式请求头)
            请求结果 = json.loads(正式请求.text)

            for i2 in 请求结果['data']['items']:
                存储图片 = f'{filePath}/{编号}.png'
                try:
                    urllib.request.urlretrieve(i2['locImageLink'], 存储图片)  # 下载图片。
                    编号 = 编号 + 1
                    print(f'{存储图片}:下载成功')
                except:
                    编号 = 编号 + 1
                    print(f'{存储图片}:下载失败')

上面是测试人员日常工作中会经常用到的一些安装包

表格读写`

from openpyxl import load_workbook
from openpyxl import Workbook


class xlsx_api():
    def __init__(self, 文件):
        self.文件 = 文件

    def 读表(self, 工作表=1):= self.文件
        表对象 = load_workbook()
        工作表 = 表对象[表对象.sheetnames[工作表 - 1]]
        行数 = 工作表.max_row
        列数 = 工作表.max_column

        表头 = []
        for i1 in range(列数):
            单元格 = 工作表.cell(row=1, column=i1 + 1)
            表头.append(单元格.value)

        data = []
        for i2 in range(行数):
            if i2 < 1:
                pass
            else:
                date = {}
                x = 0
                for i3 in 表头:
                    单元格 = 工作表.cell(row=i2 + 1, column=x + 1)
                    date[i3] = 单元格.value
                    x += 1
                data.append(date)
        return data

    def 写表(self, data, 工作表=1, 工作表名称='Sheet'):= self.文件
        try:
            新对象 = Workbook()

            工作表 = 新对象.create_sheet(f"{工作表名称}{工作表 - 1}", 工作表 - 1)

            表头 = []
            for i1 in data:
                for i2 in i1:
                    表头.append(i2)
            表头 = sorted(set(表头), key=表头.index)

            x = 1
            for i2 in 表头:
                工作表.cell(1, x, i2)
                x += 1

            x1 = 2
            for i3 in data:
                x2 = 1
                for i2 in 表头:
                    if i2 in i3:
                        工作表.cell(x1, x2, i3[i2])
                    x2 += 1
                x1 += 1

            新对象.save()
            return True
        except:
            return False


datas = [{'流水日期': '2021-11-06', '订单号': 'RK_XE1636211442', '出款金额': 1, '手续费': 2, '其他费用': 2, '转入金额': 5, },
         {'流水日期': '2021-11-07', '订单号': 'RK_XE1636211442', '出款金额': 2, '手续费': 3, '其他费用': 3, '转入金额': 6, '备注': '谢谢本站中文用户国际选择.首页帖子要求由于.电话手'},
         {'流水日期': '2021-11-08', '订单号': 'RK_XE1636211442', '出款金额': 3, '手续费': 4, '其他费用': 4, '转入金额': 7, '备注': '今天起来实现历史能力阅读系列.建设程序说明电影.信'},
         {'流水日期': '2021-11-09', '订单号': 'RK_XE1636211442', '出款金额': 4, '手续费': 5, '其他费用': 5, '转入金额': 8, '备注': '有限其实有限投资那个质量地方.的是使用之间在线已经'},
         {'流水日期': '2021-11-10', '订单号': 'RK_XE1636211442', '出款金额': 5, '手续费': 6, '其他费用': 6, '转入金额': 9, '备注': '公司为什这里包括作者介绍.控制成为加入软件作品学校'},
         {'流水日期': '2021-11-11', '订单号': 'RK_XE1636211442', '出款金额': 6, '手续费': 7, '其他费用': 7, '转入金额': 10, '备注': '部门喜欢计划中文一些汽车.朋友自己重要.以及电子文'},
         {'流水日期': '2021-11-12', '订单号': 'RK_XE1636211442', '出款金额': 7, '手续费': 8, '其他费用': 8, '转入金额': 11, '备注': '一下投资发现也是类型.空间如果一点表示发展记者因此'}]
a1 = xlsx_api('E:\测试工程\资源\表格\万能2.xlsx')
print(a1.写表(datas))

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值