精华内容
下载资源
问答
  • python有个自动生成数据库的包————faker 一、参数 locale:为生成数据的文化选项(语种),默认为 en_US,只有使用了相关文化,才能生成相对应的随机信息 常见的文化选项: zh_CN - Chinese (China ...
    python有个自动生成数据库的包————faker

    一、参数 locale:为生成数据的文化选项(语种),默认为 en_US,只有使用了相关文化,才能生成相对应的随机信息

    常见的文化选项:

    • zh_CN - Chinese (China Mainland)

    • zh_TW - Chinese (China Taiwan)

    • en_US - English (United States)

    二、生成数据类别:

    •   地理信息类
      domain_name():生成域名domain_word():域词(即,不包含后缀)ipv4():随机IP4地址ipv6():随机IP6地址mac_address():随机MAC地址tld():网址域名后缀(.com,.net.cn,等等,不包括.)uri():随机URI地址uri_extension():网址文件后缀uri_page():网址文件(不包含后缀)uri_path():网址文件路径(不包含文件名)url():随机URL地址user_name():随机用户名image_url():随机URL地址
    • 浏览器信息类
      chrome():随机生成Chrome的浏览器user_agent信息firefox():随机生成FireFox的浏览器user_agent信息internet_explorer():随机生成IE的浏览器user_agent信息opera():随机生成Opera的浏览器user_agent信息safari():随机生成Safari的浏览器user_agent信息linux_platform_token():随机Linux信息user_agent():随机user_agent信息
    • 数字信息
      numerify():三位随机数字random_digit():0~9随机数random_digit_not_null():1~9的随机数random_int():随机数字,默认0~9999,可以通过设置min,max来设置random_number():随机数字,参数digits设置生成的数字位数pyfloat():随机Float数字pyint():随机Int数字(参考random_int()参数)pydecimal():随机Decimal数字(参考pyfloat参数)
    • 文本加密类
      pystr():随机字符串random_element():随机字母random_letter():随机字母paragraph():随机生成一个段落paragraphs():随机生成多个段落sentence():随机生成一句话sentences():随机生成多句话,与段落类似text():随机生成一篇文章word():随机生成词语words():随机生成多个词语,用法与段落,句子,类似binary():随机生成二进制编码boolean():True/Falselanguage_code():随机生成两位语言编码locale():随机生成语言/国际 信息md5():随机生成MD5null_boolean():NULL/True/Falsepassword():随机生成密码,可选参数:length:密码长度;special_chars:是否能使用特殊字符;digits:是否包含数字;upper_case:是否包含大写字母;lower_case:是否包含小写字母sha1():随机SHA1sha256():随机SHA256uuid4():随机UUID
      

    三、实战使用

    import pymysql #导入连接mysql工具包
    from faker import Faker #导入faker包
    
    
    conn = pymysql.connect(host="localhost", port=3306, user="root", password="password", db="demo", charset="utf8")
    cursor = conn.cursor()
    sql1 = """drop table if exists faker_user"""
    sql2 = """
    create table faker_user(
    pid int primary key auto_increment,
    username varchar(20),
    password varchar(20),
    country  varchar(20),
    province varchar(30),
    city_suffix varchar(30),
    district  varchar(30),
    street_name varchar(30),
    street_suffix varchar(50),
    address varchar(35)
    ) default character set = utf8
    """
    cursor.execute(sql1)
    cursor.execute(sql2)
    fake = Faker("zh-CN") #设置生成的语种,默认为en_US,中文为:zh-CN
    for i in range(10):
        sql = """insert into faker_user(username,password,country,province,city_suffix,district,street_name,street_suffix,address)  
        values('%s','%s','%s','%s','%s','%s','%s','%s','%s')""" % (fake.name(), fake.password(special_chars=False), fake.country(), fake.province(), fake.city_suffix(), fake.district(), fake.street_name(), fake.street_suffix(), fake.address())
        #print (sql)
        #print('姓名:'+fake.name() + '|密码:'+fake.password(special_chars=False) + '|地址:'+fake.address())
        cursor.execute(sql)
        conn.commit()
    cursor.close()
    conn.close()

     

    展开全文
  • 今天小编就为大家分享一篇对python自动生成接口测试的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python自动生成Verilog的testbench脚本。python自动生成Verilog的testbench脚本。python自动生成Verilog的testbench脚本。
  • Python自动化测试自动生成测试用例,超厉害技能get.pdf
  • 通过断言判断是否和预期一致,写测试用例也占用了部分时间,加上版本迭代测试用例的维护成本也较高,于是基于无埋点的需求相结合自动测试检测埋点,及时告警,提高准确率和代码质量,为了减少测试用例的开发维护...

    今天,

    陕西优就业

    小优整理了一些技术类干货知识,学习软件测试的小伙伴,可以来看看,都是一些基础知识,希望能对你的学习有所帮助!

    传统的测试用例需要测试或者开发人员将用户的操作用代码表示出来,通过断言判断是否和预期一致,写测试用例也占用了部分时间,加上版本迭代测试用例的维护成本也较高,于是基于无埋点的需求相结合自动化测试来检测埋点,及时告警,提高准确率和代码质量,为了减少测试用例的开发维护时间,诞生了自动生成测试用例的方案,另外不因为出错而中断代码的执行。

    测试框架:

    测试框架使用FAutoTest,可以测试小程序,H5,对比曾经用过的selenium,代码运行要稳定很多,wait的时间也都很稳定,对比phantom截图像素对比,可以细化测试用例的行为,基于x5内核的driver能测试微信环境,能覆盖到现业务的使用场景。

    bb

    如何自动生成测试用例?

    1.首先在后台配置测试用例,具体思路

    获取点击位置xpath,该测试用例预期文案或者样式

    请求接口将测试用例数据配置写入表,并提供接口拉取所有测试用例数据

    2.配置完测试用例,python请求接口获取测试用例配置的入参(in字段),出参(out字段),in里边的字段是入参,url是点击行为所在的页面,xpath是点击的位置,out里边的字段是出参,url是预期要跳转的页面,xpath是预期页面的标记位置,带text是预期的文案,带class是预期的样式,把用户行为尽量拆分成入参,出参能够表达的行为

    3.python请求接口,遍历接口数据生成前缀为test_case_xxx的测试用例,自动生成测试用例而不是在一条测试用例里边执行完所有的行为,避免出错而中断代码执行。

    生成测试报告:

    1.安装HTMLTestRunner

    HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展,它可以生成 HTML的 测试报告。

    2.测试脚本中引入

    from HTMLTestRunner import HTMLTestRunner

    3.定义测试报告的路径,调用HtmlTestRunner

    4.执行测试脚本,打印测试报告,生成html。

    5.再次执行测试脚本,生成测试报告。

    展开全文
  • python自动生成接口测试用例

    千次阅读 2017-10-16 15:10:09
    python中Template可以将字符串的格式固定下来,重复...功能:自动生成pyunit框架下的接口测试用例 环境:python2.7.6 用法:将用户给的参数处理成对应格式,然后调用模块类生成函数,并将参数传入即可 ''' from...

    在python中Template可以将字符串的格式固定下来,重复利用。 同一套测试框架为了可以复用,所以我们可以将用例部分做参数化,然后运用到各个项目中。

    代码如下:

     

    coding=utf-8
    '''
    作者:大石
    功能:自动生成pyunit框架下的接口测试用例
    环境:python2.7.6
    用法:将用户给的参数处理成对应格式,然后调用模块类生成函数,并将参数传入即可
    '''
    
    from string import Template
    #动态生成单个测试用例函数字符串
    def singleMethodCreate(MethodList,interfaceNamePara):
        code=Template('''\n    def test_${testcase}(self):
            u"""${testcaseName}"""
            headers = $headers
            data = $data
            re = requests.$method(url='$url',headers=headers,data=data)
            status_code = re.status_code
            s = str(status_code)
            json = re.text
            logging.info('-'*5+'返回状态码是'+s+'-'*5)
            logging.info('-'*5+'返回结果集是'+json+'-'*5)
            assert status_code == 200
            assert json['status'] == 'ok'
    ''')
    
        string = code.substitute(testcase=MethodList["testcase"],testcaseName=MethodList["TestcaseName"],
                                 method=MethodList['method'],url=MethodList['url'],headers=MethodList['headers'],data=MethodList['data'],
                                 )
        return string
    
    #拼接单个的测试用例函数字符串为完整字符串并传回主函数
    #MethodParaList获取测试用例部分list
    def methodCreate(MethodParaList,interfaceNamePara):
        string = ""
        for MethodPara in MethodParaList:
            string2=singleMethodCreate(MethodPara,interfaceNamePara)
            string=string+string2
        return string
    
    #构造单个测试集
    def singleTestsuitCreate(MethodList,parameters):
        code = Template('''suite.addTest(${className}("test_${testcase}"))''')
        string = code.substitute(testcase = MethodList["testcase"],className = parameters[0])
        return string
    
    #添加测试集
    def addtestsuit(MethodParaList,interfaceNamePara):
        string = ""
        for MethodPara in MethodParaList:
            string2 = singleTestsuitCreate(MethodPara,interfaceNamePara)
            string=string+string2
        return string
    
    #生成测试用例类函数字符串
    def modelClassCreate(parameters):
        modelCode = methodCreate(parameters[2],parameters[1])
        adtestsuit = addtestsuit(parameters[2],parameters)
        code = Template('''#coding: utf-8
    """
    作者:大石
    功能:待执行的接口测试用例
    环境:python2.7.6
    用法:通过框架自动触发调用
    """
    import unittest,requests,datetime,sys,logging,BSTestRunner,time,os
    from Log import Log
    class ${className}(unittest.TestCase):
        u"""待测试接口:${interfaceName}"""
        def setUp(self):
            logging.info('-'*5+"begin test"+"-"*5)
    
        def tearDown(self):
            logging.info('-'*5+"end test"+'-'*5)
    
        ${model}
    
    if __name__ == "__main__":
        #解决UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 97: ordinal not in range(128)
        reload(sys)
        sys.setdefaultencoding('utf8')
        #构造测试集
        suite = unittest.TestSuite()
        ${testsuite}
        #定义date为日期,time为时间
        date=time.strftime("%Y%m%d")
        time1=time.strftime("%H%M%S")
        now=time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))
        #创建路径
        path='F:/test/study/yaml/test_log/'+now+"/"
        #解决多次执行时报路径已存在的错误
        try:
            os.makedirs(path)
        except:
            if path!= None:
                logging.error(u'当前路径已经存在')
        filename=path+'Report.html'
        fp=file(filename,'wb')
        #日志记录
        Log.log()
        #执行测试
        runner =BSTestRunner.BSTestRunner(stream=fp,title=u'下单平台接口测试用例',description=u'接口用例列表:')
        runner.run(suite)
        fp.close()
    ''')
        fileStr = code.substitute(className=parameters[0],interfaceName=parameters[1],testsuite=adtestsuit,model=modelCode)
        f=open(parameters[0]+".py",'w')
        f.write(fileStr)
        f.close()
    

     

    然后测试用例部分如下:

     

     

        parameters=["Testcase_Orders",
                    "/login",
                   [
                        {"TestcaseName":"测试登录","method":"post","url":"http://www.senbaba.cn/login","headers":{'content-type': 'application/json',
                       'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko',
                       'Accept':'application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*',
                       'Accept-Language':'zh-CN'},"data":{"uname":"187071484771","pwd":"123456"},
                            "testcase":"login"},
    
                       {"TestcaseName":"测试登录","method":"post","url":"http://www.senbaba.cn/login1","headers":{'content-type': 'application/json',
                       'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko',
                       'Accept':'application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*',
                       'Accept-Language':'zh-CN'},"data":{"uname":"187071484771","pwd":"123457"},
                            "testcase":"login_failed"}
                    ]
                ]

     

     

    自动生成的测试用例如下:

     

     

     

    #coding: utf-8
    """
    作者:大石
    功能:待执行的接口测试用例
    环境:python2.7.6
    用法:通过框架自动触发调用
    """
    import unittest,requests,datetime,sys,logging,BSTestRunner,time,os
    from Log import Log
    class Testcase_Orders(unittest.TestCase):
        u"""待测试接口:/login"""
        def setUp(self):
            logging.info('-'*5+"begin test"+"-"*5)
    
        def tearDown(self):
            logging.info('-'*5+"end test"+'-'*5)
    
        
        def test_login(self):
            u"""测试登录"""
            headers = {'Accept-Language': 'zh-CN', 'content-type': 'application/json', 'Accept': 'application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'}
            data = {'uname': '187071484771', 'pwd': '123456'}
            re = requests.post(url='http://www.senbaba.cn/login',headers=headers,data=data)
            status_code = re.status_code
            s = str(status_code)
            json = re.text
            logging.info('-'*5+'返回状态码是'+s+'-'*5)
            logging.info('-'*5+'返回结果集是'+json+'-'*5)
            assert status_code == 200
            assert json['status'] == 'ok'
    
        def test_login_failed(self):
            u"""测试登录"""
            headers = {'Accept-Language': 'zh-CN', 'content-type': 'application/json', 'Accept': 'application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'}
            data = {'uname': '187071484771', 'pwd': '123457'}
            re = requests.post(url='http://www.senbaba.cn/login1',headers=headers,data=data)
            status_code = re.status_code
            s = str(status_code)
            json = re.text
            logging.info('-'*5+'返回状态码是'+s+'-'*5)
            logging.info('-'*5+'返回结果集是'+json+'-'*5)
            assert status_code == 200
            assert json['status'] == 'ok'
    
    
    if __name__ == "__main__":
        #解决UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 97: ordinal not in range(128)
        reload(sys)
        sys.setdefaultencoding('utf8')
        #构造测试集
        suite = unittest.TestSuite()
        
        suite.addTest(Testcase_Orders("test_login"))
    
        suite.addTest(Testcase_Orders("test_login_failed"))
    
        #定义date为日期,time为时间
        date=time.strftime("%Y%m%d")
        time1=time.strftime("%H%M%S")
        now=time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))
        #创建路径
        path='F:/test/study/yaml/test_log/'+now+"/"
        #解决多次执行时报路径已存在的错误
        try:
            os.makedirs(path)
        except:
            if path!= None:
                logging.error(u'当前路径已经存在')
        filename=path+'Report.html'
        fp=file(filename,'wb')
        #日志记录
        Log.log()
        #执行测试
        runner =BSTestRunner.BSTestRunner(stream=fp,title=u'下单平台接口测试用例',description=u'接口用例列表:')
        runner.run(suite)
        fp.close()
    

     

    20171019添加测试集的一个简单方法:

     

     

    #添加测试集
    def addtestsuit(parameters):
        string = ""
        temp = Template('''\n    suite.addTest(${className}("test_${testcase}"))
    ''')
        l = len(parameters[2])
        for i in range(0,l):
            testcase1 = parameters[2][i]['testcase']
            string2 = temp.substitute(className = parameters[0],testcase = testcase1)
            string=string+string2
            print string
        return string

     

     

     

     

     

     

     

     

    展开全文
  • 传统的测试用例需要测试或者开发人员将用户的操作用代码表示出来,...及时告警,提高准确率和代码质量,为了减少测试用例的开发维护时间,诞生了自动生成测试用例的方案,另外不因为出错而中断代码的执行 测试框架 ...
    传统的测试用例需要测试或者开发人员将用户的操作用代码表示出来,通过断言判断是否和预期一致,写测试用例也占用了部分时间,加上版本迭代测试用例的维护成本也较高,于是基于无埋点的需求相结合自动化测试来检测埋点,及时告警,提高准确率和代码质量,为了减少测试用例的开发维护时间,诞生了自动生成测试用例的方案,另外不因为出错而中断代码的执行
    测试框架

    https://github.com/Tencent/FA...

    测试框架使用FAutoTest,可以测试小程序,H5,对比曾经用过的selenium,代码运行要稳定很多,wait的时间也都很稳定,对比phantom截图像素对比,可以细化测试用例的行为,基于x5内核的driver能测试微信环境,能覆盖到现业务的使用场景,具体使用,可以参看上述链接

    如何自动生成测试用例

    图片描述

    1.首先在后台配置测试用例,具体思路

    • 获取点击位置xpath,该测试用例预期文案或者样式
    • 请求接口将测试用例数据配置写入表,并提供接口拉取所有测试用例数据

    2.配置完测试用例,python请求接口获取测试用例配置的入参(in字段),出参(out字段),,in里边的字段是入参,url是点击行为所在的页面,xpath是点击的位置,out里边的字段是出参,url是预期要跳转的页面,xpath是预期页面的标记位置,带text是预期的文案,带class是预期的样式,把用户行为尽量拆分成入参,出参能够表达的行为

    3.python请求接口,遍历接口数据生成前缀为test_case_xxx的测试用例,自动生成测试用例而不是在一条测试用例里边执行完所有的行为,避免出错而中断代码执行,代码如下
    图片描述

    生成测试报告

    1)安装HTMLTestRunner

    HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展,它可以生成 HTML的 测试报告。

    首先要下 HTMLTestRunner.py 文件,将下载的文件放入…pythonLib目录下

    python2版下载地址:http://tungwaiyip.info/softwa...

    python3版下载地址:http://pan.baidu.com/s/1dEZQ0pz

    2)测试脚本中引入

    from HTMLTestRunner import HTMLTestRunner
    3)定义测试报告的路径,调用HtmlTestRunner

    # 按照一定的格式获取当前的时间
    now = time.strftime("%Y-%m-%d %H_%M_%S")
    # 定义报告存放路径
    filename = "../report/" + now + ".html"
    fp = open(filename, "wb")
    # 定义测试报告
    runner = HTMLTestRunner(stream=fp,
     title="测试报告",
     description="测试用例执行情况:")
    runner.run(suite())
    

    4)执行测试脚本,打印测试报告,生成html,但是测试报告中有乱码,参考网上解决方法:https://testerhome.com/topics...,测试脚本引入代码

    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
    修改HtmlTestRunner.py中的编码“latin-1”修改为“utf-8”后保存

    5)再次执行测试脚本,生成测试报告如下:
    图片描述

    展开全文
  • 利用python自动生成docker nginx反向代理配置 由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在...
  • Python自动生成的客户端库 请注意,您不应向存储库发出请求请求,因为会在每个Core版本上自动生成clientlib。 相反,请提交拉取至: 代码在sources / python下
  • Python 自动生成 Word 文档

    万次阅读 多人点赞 2018-08-14 15:59:51
    pip install python-docx 使用该库的基本步骤为: 1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件)。 2.设置文档的格式(默认字体、页面边距等)。 3.在文档对象中加入段落文本、表格、图像...
  • python自动化测试,生成测试报告

    千次阅读 2016-07-06 12:02:19
    在软件测试结束之后,一般都要求生成测试报告,在利用python写的测试脚本中可以引入HTMLTestRunner, HTMLTestRunner是Python标准库unittest单元测试框架中的一个扩展,比较容易生成测试报告, 下载地址:...
  • python自动生成代码

    千次阅读 2016-07-27 22:45:38
    如何用用python解析简单的C++的头文件提取类的元数据,并据此结合模板自动生成代码。这里给出了一个简单的工作实例,希望对有相关需求的同学可以有所帮助。
  • Python自动测试之Selenium

    万人学习 2019-08-07 15:57:44
    本课程详细介绍了Selenium Python版本的自动化测试方法和实践,通过本课程的学习你将掌握如下内容:Selenium 测试环境搭建单元测试、生成测试报告、定位元素、WebDriver属性和方法、WebElement属性和方法、操作form...
  • Python自动生成Excel报表

    千次阅读 2020-11-06 10:04:25
    类似这种重复无聊的任务,我们完全可以交给 Python自动完成,只要第一次把 Python 代码写好,以后就可以一键完成,省时省力,还不容易出错,这是提升工作质量和工作效率的利器,让我们能够腾出时间和精力,去做更...
  • 及时告警,提高准确率和代码质量,为了减少测试用例的开发维护时间,诞生了自动生成测试用例的方案,另外不因为出错而中断代码的执行。 测试框架: 测试框架使用FAutoTest,可以测试小程序,H5,对比曾经用过的...
  • Python生成Word文档 在指定位置插入图片 首先当然需要第三方库啦(▽) 天才第一步,第三方的库O(∩_∩)O哈哈~ 使用以下命令安装: pip install python-docx 那么重点来了: 使用该库的基本步骤为: 1.建立一个文档...
  • Python 自动生成文件夹目录结构

    千次阅读 2020-07-21 01:24:27
    代码整理于互联网,运行时指定一下 ignore_list 和 direction_path 即可快速生成文件夹目录结构图 import re from pathlib import Path from pathlib import WindowsPath from typing import Optional, List ...
  • python自动生成requirements.txt文件

    千次阅读 2020-01-17 09:51:25
    目录背景生成requirements.txt的办法方案一方案二安装requirements.txt中的类库内容 背景 因为项目在windows开发,有1台测试环境,...可以自己写,也可以自动生成。 生成requirements.txt的办法 方案一 pip free...
  • 测试报告在任何测试自动化框架中都是至关重要的,而且我们都知道,即使专家也需要付出多大的努力才能生成测试自动化报告,更不用说我们是否也想拥有自定义自由……在此,有许多定制的解决方案可供选择。行业来帮助...
  • HTMLTestrunner自动测试生成报告兼容python3, 把该脚本直接放在python的Lib目录下
  • 自动生成数据分析报告(PPT格式) 目录说明: py-pptx -auto_report # 核心代码目录 -resources # 资源目录 -data # 数据文件存放目录 -driver # 浏览器驱动位置 -report # 报告生成位置,报告临时文件存放目录 -...
  • 在脚本运行完成之后,除了在log.txt文件看到运行日志外,我们更希望能生成一张漂亮的测试报告来展示用例执行的结果。 HTMLTestRunner是python标准库的unittest模块的扩展 首先要下载HTMLTestRunner.py文件 下载...
  • 前言: 日常测试流程中,... 综上,自动化测试报告生成脚本便完成了,在其后的版本迭代过程中只需更改预设数据中的内容,不同样式或内容的报告即可自动生成,希望本文能够对大家有所帮助,欢迎各位同行发表你的看法。
  • 用于测试时它非常有效,因此Python越来越受到欢迎。 因此,在此次教程中我将聊一聊如何在Python生成字典,并将它用于任何你想要的用途。 前提要求 1,Python 2.7(对于Python 3.x的版本基本相同,你只需要做...
  • 前言: 用python执行测试脚本, 测试报告是记录我们测试过程的问题, 方便我们对整个测试过程的把控. 这里引用的是别人写好的模板, 我们拿过来用就OK, 能力强者可自行编写模板 测试报告图模板: 1.第一步:首先下载...
  • worksheet.merge_range('A1:I1', '测试结果总概况', define_format_H1) worksheet.merge_range('A2:I2', '测试概括', define_format_H2) # worksheet.merge_range('A3:A6', '这里放图片', self.get_format_center...
  • reader.py 用来读取excel文档,掉用writer中拼接字符串的方法,来生成一个个测试脚本,_init_.py的作用是用来运行HTMLTestRunner,以生成测试报告。比较简单,适用于初学者,因为我就是一个初学者

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 176,266
精华内容 70,506
关键字:

python自动生成测试

python 订阅