精华内容
下载资源
问答
  • python接口自动化框架

    2021-03-04 17:17:51
    python接口自动化框架 每天一个面试膨胀小技巧,今天你学废了嘛?

    python接口自动化框架

    在这里插入图片描述

    展开全文
  • Python接口自动化框架

    2019-12-09 18:05:36
    文章目录Python自动化框架Request库实战一.接口文档规范二.Mock接口服务开发实战三.Request库语法格式总结1.下载安装和导入Requests库2.get请求3.post请求4.requests返值四.接口层框架1.基本组成2.项目根目录4.流程...

    Python自动化框架

    Request库实战

    一.接口文档规范

    包含:

    • 接口名
    • 接口描述
    • 请求方式
    • 返回格式
    • 请求参数说明(名称,必填,类型,说明)
    • 返回参数说明(名称,类型,说明)
    • json返回示例

    二.Mock接口服务开发实战

    [
       {
           "description":"post_form请求和响应,模拟登录接口",
           "request":
           {
               "headers":{"content-type":"application/x-www-form-unlencoded"},
               "method":"post",
               "uri":"/login",
               "forms":{"username":"xiaoqiang","pws":"123123"}
           }
           "response":
           {
               "json":{"error_code":0,"reason":"successed","username":"xiaoqiang","checkstatus":"on"}
               "status":200
           }
       },
       
       {
           ...
       }
    ]
    

    三.Request库语法格式总结

    Request是python中强大的请求库,基本所有的请求都是用它来完成

    1.下载安装和导入Requests库

    pip install requests
    
    import requests
    

    2.get请求

    r=requests.get(url,params=None,headers=None,cookies=None,auth=None,timeout=o.oo1)
    
    
    • url:请求地址,必填(其他都是选填)
    • params:请求参数
      • 可以是字典
      • 可以是json字符串
      {'q': 'python', 'cat': '1001'}
      
      • 字典字符串都会被自动编码发送到url
      • 可以是字节(必须是ascii编码以内)
    • headers:请求头.一般有两种模式
      • form格式
      'Content-Type':'application/x-www-form-urlencoded'
      
      • json格式
      'Content-Type':'application/json'
      # 如果是该格式,需要在请求header里加上
         + cookies 
         + auth: 身份认证
         + timeout:请求超时时间,单位second
      
    • cookie: 有就放,没有就不放

    3.post请求

    r=requests.post(url,data=none,headers=none,cookies=none,auth=none,timeout=0.01)
    
    • 带数据的post
      • json是以字符串在python中存在,但str()和json.dumps()有区别
       a = {'a': 1, 'b': 2}
       b = {"a": 1, "b": 2}
       stringA = str(a)
       stringB = str(b)
       jsA = json.dumps(a)
       jsB = json.dumps(b)
       print(stringA==stringB) #真,stringA={'a': 1, 'b': 2}
       print(stringA==JSA) # 假,jsA={"a": 1, "b": 2}
       ## string和js的区别在于引号,json.loads(<str>)参数对象的字符串,除了要满足字典类型的格式外,所有的字符串对象必须是双引号。
      
      • data为字典类型
      data = {'key1':'value1','key2':'value2'} 字典类型
      r = requests.post(url,data=data) #data须是字典类型
      
      • data为字符串类型
      data = {'key1':'value1','key2':'value2'}
      data = json.dumps(data)#将json格式转化为str类型
      r = requests.post(url,data=eval(data))
      

    `

    • 带headers的post
    headers = {"User-Agent":"test request headers"}
    r = requests.post(url,headers=headers)
    
    • 带json的post
    data = {
        "sites": [
                    { "name":"test" , "url":"www.test.com" },
                    { "name":"google" , "url":"www.google.com" },
                    { "name":"weibo" , "url":"www.weibo.com" }
        ]
    }
    r = requests.post(url,json=data)
    
    • 普通文件上传
    files = {
                'file':open('test.txt','rb')
            }
    
    r = requests.post(url,files=files)
    
    • 流式上传
    with open( 'test.txt' ) as f:
        r = requests.post(url,data = f)
    

    若有其他put ,delete 接口,使用方法只要在import requests 的前提下把 get 或者post改成put即可,其余不
    https://www.cnblogs.com/puresoul/p/7488700.html

    4.requests返值

    • r.status_code 返回状态码
    • r.reason 返回具体解释
    • r.headers 返回响应头
    • r.text 返回响应对象(返回了json类型,在python中无法使用)
      • 返回值是str类型
      • 取返回值中的参数时
      name = re.findall(r'"name":(.+?),"age"',str(r.text))#返回的的lessonid是list类型,还要进行转化
      
    • r.content 返回响应对象(bytes,图片,文件,中文显示为字符)
      • 返回bytes类型
    • r.json()响应转换为python可识别的类型,供后续代码使用
      • 返回值是字典类型
      • 取返回值
      lessonId=r.json()['lessonId']
      

    四.接口层框架

    1.基本组成

    • 主程序入口
    • 遍历用例 (发送请求,接收响应,判断结果)
    • 保存结果(生成报告)
    • 发送email
    • 贯穿log日志

    2.项目根目录

    • main.py–(不涉及具体实现,而是主要的通用执行)
    • src
      • 1.run_testcase.py (完成可执行的遍历)
      • 2.interface_test.py(请求的发送,响应的接收和结果的判断保存)
      • 每次执行1就去遍历,每遍历1个就调用2,进行请求的响应和结果保存判断
    • log
    • testcase
    • testdata
    • report
    • commons
    • libs

    4.流程图

    image

    3.关联参数

    4.日志log

    5.发送邮件

    展开全文
  • PYTHON接口自动化框架

    2020-06-24 17:35:36
    大部分是数据的增删改查,由于还在开发阶段,所以UI界面的变化非常快,之前尝试过用python+selenium进行UI自动化测试,后来发现今天刚写好的脚本第二天前端就改了页面,又得重新去定位元素什么的,消耗大量的精力与...

    项目背景

    公司内部的软件采用B/S架构,管理实验室数据,实现数据的存储和分析统计。大部分是数据的增删改查,由于还在开发阶段,所以UI界面的变化非常快,之前尝试过用python+selenium进行UI自动化测试,后来发现今天刚写好的脚本第二天前端就改了页面,又得重新去定位元素什么的,消耗大量的精力与时间维护自动化脚本。针对此种情况,对接口测试较为有效。

    工具

    由于开发那里不能提供后台代码给我,只能通过抓包分析。使用fiddler抓包,发现前端与后台都是采用POST方法交互,前端POST数据,后台返回数据。这样也比较简单粗暴,直接针对每个接口POST测试数据,然后观察返回值就好了。

    使用excel编写测试用例和数据,requests发送HTTP请求。

    功能模块

    通过xlrd库读取excel中的测试用例和数据
    requests负责发送数据并接收后台返回的数据
    针对测试结果,需要保存测试日志并生成测试报告,采用python自带的logging记录日志,测试报告采用html格式。
    同时测试完成后,需要将测试报告发送给相关的开发人员,需要有自动发送邮件的功能

    目录结构

     

     代码实现

     

    #通过自带的ConfigParser模块,读取邮件发送的配置文件,作为字典返回
    import ConfigParser
    
    def get_conf():
        conf_file = ConfigParser.ConfigParser()
    
        conf_file.read(os.path.join(os.getcwd(),'conf.ini'))
    
        conf = {}
    
        conf['sender'] = conf_file.get("email","sender")
    
        conf['receiver'] = conf_file.get("email","receiver")
    
        conf['smtpserver'] = conf_file.get("email","smtpserver")
    
        conf['username'] = conf_file.get("email","username")
    
        conf['password'] = conf_file.get("email","password") 
    
        return conf

     

    配置文件格式

     

     这个logging不熟悉的可以google一下,还是挺有用的,需要自己配置一下。需要手动新建一个空白的.log文件。

     

    #此处使用python自带的logging模块,用来作为测试日志,记录测试中系统产生的信息。
    import logging,os
    log_file = os.path.join(os.getcwd(),'log/sas.log')
    log_format = '[%(asctime)s] [%(levelname)s] %(message)s'     #配置log格式
    logging.basicConfig(format=log_format, filename=log_file, filemode='w', level=logging.DEBUG)
    console = logging.StreamHandler()
    console.setLevel(logging.DEBUG)
    formatter = logging.Formatter(log_format)
    console.setFormatter(formatter)
    logging.getLogger('').addHandler(console)

     

    excel文件如下图

     

     

     

    python读取excel跟读取一个二维数组差不多,下标也是从0开始

     

    #读取testcase excel文件,获取测试数据,调用interfaceTest方法,将结果保存至errorCase列表中。
    import xlrd,hashlib,json
    
    def runTest(testCaseFile):
          testCaseFile = os.path.join(os.getcwd(),testCaseFile)
          if not os.path.exists(testCaseFile):
              logging.error('测试用例文件不存在!')
              sys.exit()
          testCase = xlrd.open_workbook(testCaseFile)
          table = testCase.sheet_by_index(0)
          errorCase = []                #用于保存接口返回的内容和HTTP状态码
    
          s = None
          for i in range(1,table.nrows):
                if table.cell(i, 9).vale.replace('\n','').replace('\r','') != 'Yes':
                    continue
                num = str(int(table.cell(i, 0).value)).replace('\n','').replace('\r','')
                api_purpose = table.cell(i, 1).value.replace('\n','').replace('\r','')
                api_host = table.cell(i, 2).value.replace('\n','').replace('\r','')
                request_method = table.cell(i, 4).value.replace('\n','').replace('\r','')
                request_data_type = table.cell(i, 5).value.replace('\n','').replace('\r','')
                request_data = table.cell(i, 6).value.replace('\n','').replace('\r','')
                encryption = table.cell(i, 7).value.replace('\n','').replace('\r','')
                check_point = table.cell(i, 8).value
    
                if encryption == 'MD5':              #如果数据采用md5加密,便先将数据加密
                    request_data = json.loads(request_data)
                    request_data['pwd'] = md5Encode(request_data['pwd'])
                status, resp, s = interfaceTest(num, api_purpose, api_host, request_url, request_data, check_point, request_methon, request_data_type, s)
                if status != 200 or check_point not in resp:            #如果状态码不为200或者返回值中没有检查点的内容,那么证明接口产生错误,保存错误信息。
                    errorCase.append((num + ' ' + api_purpose, str(status), 'http://'+api_host+request_url, resp))
            return errorCase

     

    下面的就是接口部分

    由于所有的操作必须在系统登录之后进行,一开始没有注意到cookie这一点,每读取一个测试用例,都会新建一个session,导致无法维护上一次请求的cookie。然后将cookie添加入请求头中,但是第二个用例仍然无法执行成功。后来用fiddler抓包分析了一下,发现cookie的值竟然是每一次操作后都会变化的!!!

    所以只能通过session自动维护cookie。
    在interfaceTest函数中,返回三个值,分别是HTTP CODE,HTTP返回值与session。再将上一次请求的session作为入参传入interfaceTest函数中,在函数内部判断session是否存在,如果不为None,那么直接利用传入的session执行下一个用例,如果为None,那么新建一个session。

     

    #接受runTest的传参,利用requests构造HTTP请求
    import requests
    
    def interfaceTest(num, api_purpose, api_host, request_method,
                      request_data_type, request_data, check_point, s=None)
         headers = {'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8',
                          'X-Requested-With' : 'XMLHttpRequest',
                          'Connection' : 'keep-alive',
                          'Referer' : 'http://' + api_host,
                          'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36'
                    }
    
         if s == None:
              s = requests.session()
         if request_method == 'POST':
              if request_url != '/login' :
                  r = s.post(url='http://'+api_host+request_url, data = json.loads(request_data), headers = headers)         #由于此处数据没有经过加密,所以需要把Json格式字符串解码转换成**Python对象**
              elif request_url == '/login' :
                  s = requests.session()
                  r = s.post(url='http://'+api_host+request_url, data = request_data, headers = headers)          #由于登录密码不能明文传输,采用MD5加密,在之前的代码中已经进行过json.loads()转换,所以此处不需要解码
         else:
              logging.error(num + ' ' + api_purpose + '  HTTP请求方法错误,请确认[Request Method]字段是否正确!!!')
              s = None
              return 400, resp, s
         status = r.status_code
         resp = r.text
         print resp
         if status == 200 :
            if re.search(check_point, str(r.text)):
                logging.info(num + ' ' + api_purpose + ' 成功,' + str(status) + ', ' + str(r.text))
                return status, resp, s
            else:
                logging.error(num + ' ' + api_purpose + ' 失败!!!,[' + str(status) + '], ' + str(r.text))
                return 200, resp , None
         else:
                logging.error(num + ' ' + api_purpose + '  失败!!!,[' + str(status) + '],' + str(r.text))
                return status, resp.decode('utf-8'), None
    import hashlib
    
    def md5Encode(data):
          hashobj = hashlib.md5()
          hashobj.update(data.encode('utf-8'))
          return hashobj.hexdigest()
    
    def sendMail(text):
          mail_info = get_conf()
          sender = mail_info['sender']
          receiver = mail_info['receiver']
          subject = '[AutomationTest]接口自动化测试报告通知'
          smtpserver = mail_info['smtpserver']
          username = mail_info['username']
          password = mail_info['password']
          msg = MIMEText(text,'html','utf-8')
          msg['Subject'] = subject
          msg['From'] = sender
          msg['To'] = ''.join(receiver)
          smtp = smtplib.SMTP()
          smtp.connect(smtpserver)
          smtp.login(username, password)
          smtp.sendmail(sender, receiver, msg.as_string())
          smtp.quit()
    
    
    def main():
          errorTest = runTest('TestCase/TestCase.xlsx')
          if len(errorTest) > 0:
              html = '<html><body>接口自动化扫描,共有 ' + str(len(errorTest)) + ' 个异常接口,列表如下:' + '</p><table><tr><th style="width:100px;text-align:left">接口</th><th style="width:50px;text-align:left">状态</th><th style="width:200px;text-align:left">接口地址</th><th   style="text-align:left">接口返回值</th></tr>'
              for test in errorTest:
                  html = html + '<tr><td style="text-align:left">' + test[0] + '</td><td style="text-align:left">' + test[1] + '</td><td style="text-align:left">' + test[2] + '</td><td style="text-align:left">' + test[3] + '</td></tr>'
                  sendMail(html)
    
    if __name__ == '__main__':
        main()

     

    以上就是一个简单的接口测试实现,参考了论坛里的大神们很多东西,还有很多不足之处。例如html格式的邮件很简陋,可以考虑生成一个HTML的测试报告,作为附件发送。
    接口方法只实现了一个POST。

    笔者这边创建了一个软件测试技术交流群1125760266,欢迎大家加入,共同探讨学习!

    展开全文
  • 大部分是数据的增删改查,由于还在开发阶段,所以UI界面的变化非常快,之前尝试过用python+selenium进行UI自动化测试,后来发现今天刚写好的脚本第二天前端就改了页面,又得重新去定位元素什么的,消耗大量的精力与...

    项目背景

    公司内部的软件采用B/S架构,管理实验室数据,实现数据的存储和分析统计。大部分是数据的增删改查,由于还在开发阶段,所以UI界面的变化非常快,之前尝试过用python+selenium进行UI自动化测试,后来发现今天刚写好的脚本第二天前端就改了页面,又得重新去定位元素什么的,消耗大量的精力与时间维护自动化脚本。针对此种情况,对接口测试较为有效。

    工具

    由于开发那里不能提供后台代码给我,只能通过抓包分析。使用fiddler抓包,发现前端与后台都是采用POST方法交互,前端POST数据,后台返回数据。这样也比较简单粗暴,直接针对每个接口POST测试数据,然后观察返回值就好了。

    使用excel编写测试用例和数据,requests发送HTTP请求。

    功能模块

    通过xlrd库读取excel中的测试用例和数据

    requests负责发送数据并接收后台返回的数据

    针对测试结果,需要保存测试日志并生成测试报告,采用python自带的logging记录日志,测试报告采用html格式。

    同时测试完成后,需要将测试报告发送给相关的开发人员,需要有自动发送邮件的功能

    目录结构

    af053b585ef01115aadb2ce3f4498ece.png

    代码实现

    #通过自带的ConfigParser模块,读取邮件发送的配置文件,作为字典返回

    import ConfigParser

    def get_conf():

    conf_file = ConfigParser.ConfigParser()

    conf_file.read(os.path.join(os.getcwd(),'conf.ini'))

    conf = {}

    conf['sender'] = conf_file.get("email","sender")

    conf['receiver'] = conf_file.get("email","receiver")

    conf['smtpserver'] = conf_file.get("email","smtpserver")

    conf['username'] = conf_file.get("email","username")

    conf['password'] = conf_file.get("email","password")

    return conf

    配置文件格式

    b07d4e647d4dfed06dff900442c6cf21.png

    这个logging不熟悉的可以google一下,还是挺有用的,需要自己配置一下。需要手动新建一个空白的.log文件。

    #此处使用python自带的logging模块,用来作为测试日志,记录测试中系统产生的信息。

    import logging,os

    log_file = os.path.join(os.getcwd(),'log/sas.log')

    log_format = '[%(asctime)s] [%(levelname)s] %(message)s' #配置log格式

    logging.basicConfig(format=log_format, filename=log_file, filemode='w', level=logging.DEBUG)

    console = logging.StreamHandler()

    console.setLevel(logging.DEBUG)

    formatter = logging.Formatter(log_format)

    console.setFormatter(formatter)

    logging.getLogger('').addHandler(console)

    excel文件如下图

    6483db201929f5ea54f1f8bb0971b937.png

    python读取excel跟读取一个二维数组差不多,下标也是从0开始

    #读取testcase excel文件,获取测试数据,调用interfaceTest方法,将结果保存至errorCase列表中。

    import xlrd,hashlib,json

    def runTest(testCaseFile):

    testCaseFile = os.path.join(os.getcwd(),testCaseFile)

    if not os.path.exists(testCaseFile):

    logging.error('测试用例文件不存在!')

    sys.exit()

    testCase = xlrd.open_workbook(testCaseFile)

    table = testCase.sheet_by_index(0)

    errorCase = [] #用于保存接口返回的内容和HTTP状态码

    s = None

    for i in range(1,table.nrows):

    if table.cell(i, 9).vale.replace(' ','').replace(' ','') != 'Yes':

    continue

    num = str(int(table.cell(i, 0).value)).replace(' ','').replace(' ','')

    api_purpose = table.cell(i, 1).value.replace(' ','').replace(' ','')

    api_host = table.cell(i, 2).value.replace(' ','').replace(' ','')

    request_method = table.cell(i, 4).value.replace(' ','').replace(' ','')

    request_data_type = table.cell(i, 5).value.replace(' ','').replace(' ','')

    request_data = table.cell(i, 6).value.replace(' ','').replace(' ','')

    encryption = table.cell(i, 7).value.replace(' ','').replace(' ','')

    check_point = table.cell(i, 8).value

    if encryption == 'MD5': #如果数据采用md5加密,便先将数据加密

    request_data = json.loads(request_data)

    request_data['pwd'] = md5Encode(request_data['pwd'])

    status, resp, s = interfaceTest(num, api_purpose, api_host, request_url, request_data, check_point, request_methon, request_data_type, s)

    if status != 200 or check_point not in resp: #如果状态码不为200或者返回值中没有检查点的内容,那么证明接口产生错误,保存错误信息。

    errorCase.append((num + ' ' + api_purpose, str(status), 'http://'+api_host+request_url, resp))

    return errorCase

    下面的就是接口部分

    由于所有的操作必须在系统登录之后进行,一开始没有注意到cookie这一点,每读取一个测试用例,都会新建一个session,导致无法维护上一次请求的cookie。然后将cookie添加入请求头中,但是第二个用例仍然无法执行成功。后来用fiddler抓包分析了一下,发现cookie的值竟然是每一次操作后都会变化的!!!

    所以只能通过session自动维护cookie。

    在interfaceTest函数中,返回三个值,分别是HTTP

    CODE,HTTP返回值与session。再将上一次请求的session作为入参传入interfaceTest函数中,在函数内部判断session是否存在,如果不为None,那么直接利用传入的session执行下一个用例,如果为None,那么新建一个session。

    #接受runTest的传参,利用requests构造HTTP请求

    import requests

    def interfaceTest(num, api_purpose, api_host, request_method,

    request_data_type, request_data, check_point, s=None)

    headers = {'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8',

    'X-Requested-With' : 'XMLHttpRequest',

    'Connection' : 'keep-alive',

    'Referer' : 'http://' + api_host,

    'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36'

    }

    if s == None:

    s = requests.session()

    if request_method == 'POST':

    if request_url != '/login' :

    r = s.post(url='http://'+api_host+request_url, data = json.loads(request_data), headers = headers) #由于此处数据没有经过加密,所以需要把Json格式字符串解码转换成**Python对象**

    elif request_url == '/login' :

    s = requests.session()

    r = s.post(url='http://'+api_host+request_url, data = request_data, headers = headers) #由于登录密码不能明文传输,采用MD5加密,在之前的代码中已经进行过json.loads()转换,所以此处不需要解码

    else:

    logging.error(num + ' ' + api_purpose + ' HTTP请求方法错误,请确认[Request Method]字段是否正确!!!')

    s = None

    return 400, resp, s

    status = r.status_code

    resp = r.text

    print resp

    if status == 200 :

    if re.search(check_point, str(r.text)):

    logging.info(num + ' ' + api_purpose + ' 成功,' + str(status) + ', ' + str(r.text))

    return status, resp, s

    else:

    logging.error(num + ' ' + api_purpose + ' 失败!!!,[' + str(status) + '], ' + str(r.text))

    return 200, resp , None

    else:

    logging.error(num + ' ' + api_purpose + ' 失败!!!,[' + str(status) + '],' + str(r.text))

    return status, resp.decode('utf-8'), None

    import hashlib

    def md5Encode(data):

    hashobj = hashlib.md5()

    hashobj.update(data.encode('utf-8'))

    return hashobj.hexdigest()

    def sendMail(text):

    mail_info = get_conf()

    sender = mail_info['sender']

    receiver = mail_info['receiver']

    subject = '[AutomationTest]接口自动化测试报告通知'

    smtpserver = mail_info['smtpserver']

    username = mail_info['username']

    password = mail_info['password']

    msg = MIMEText(text,'html','utf-8')

    msg['Subject'] = subject

    msg['From'] = sender

    msg['To'] = ''.join(receiver)

    smtp = smtplib.SMTP()

    smtp.connect(smtpserver)

    smtp.login(username, password)

    smtp.sendmail(sender, receiver, msg.as_string())

    smtp.quit()

    def main():

    errorTest = runTest('TestCase/TestCase.xlsx')

    if len(errorTest) > 0:

    html = '

    接口自动化扫描,共有 ' + str(len(errorTest)) + ' 个异常接口,列表如下:' + '
    接口状态接口地址接口返回值

    for test in errorTest:

    html = html + '

    ' + test[0] + '' + test[1] + '' + test[2] + '' + test[3] + ''

    sendMail(html)

    if __name__ == '__main__':

    main()

    以上就是一个简单的接口测试实现,参考了论坛里的大神们很多东西,还有很多不足之处。例如html格式的邮件很简陋,可以考虑生成一个HTML的测试报告,作为附件发送。

    接口方法只实现了一个POST。

    转自:https://testerhome.com/topics/4948

    展开全文
  • 今天讲一下搭建接口自动化测试框架吧。框架搭建起来很简单的,难的是写接口测试逻辑,你公司要是有自己的框架,你只需要调用一下就好了。如果你公司让你从0开始自动化你就得好好看看这篇文章了。 什么是框架? ...
  • 用例怎么写,用例规范 其他功能: 操作数据库,redis 查找测试用例 产生测试报告 发送测试报告(邮件,钉钉) 业务相关功能: token get_token(phone) get_uid(username) ‘’’ return uid ...return sign
  • <续>Python接口自动化框架的简单思路

    千次阅读 2016-11-03 13:14:21
    故事背景2年前,和一个同学(爱奇艺大神)聊起写一个自动化框架。正好,前阵子公司在做python的培训,顺便写了一个python接口自动化脚本。
  • 登录接口获取token
  • 接口测试框架使用python语言实现,基于pytest测试框架,同时集成Jenkins和Allure 核心特性 封装requests请求,使用装饰器模式 详细的请求日志输出 环境与数据隔离,实现不同环境不同数据 测试用例支持参数...
  • 1、目的:用代码实现接口测试 2、流程 3、先建立几个目录 大概就是酱紫了,还在继续完善中,这一篇属于从0-1的开始,争取2周时间实现这个小小的目标。 转载于:...
  • python 的学习总结——元组 以前学习不知道总结,也不知道去复习,到用的时候发现自己还是小白,于是我今天开始尝试记录笔记到这里供自己以后复习。 一、元组的创建 1> 使用赋值运算符直接创建元组 tuplename=...
  • 新建python工程unittest_db_interface,用unittest连接db的接口测试,想要达到的最终效果是在script目录下全是unittest测试脚本,但是这些测试脚本不是手动写的,而是根据你在数据库里添加的测试用例自动生成的,...
  • 一、unittst单元测试框架 概念参考:https://docs.python.org/2/library/unittest.html 使用方法:import unittest (引入unittest模块) 二、步骤  1.定义一个测试类,继承unittest.TestCase class ...
  •  平时我们用unittest的时候,都知道每个test_ 都是相互独立的,但是很多现实情况是,我们下一个接口参数,可能会用到上一个接口返回的json字段,那么,我们怎么去实现呢 2.实例 1. 首先初始url, 跟Request方法...
  • 1. 安装Pycharm,并选择编译器为目前计算机上安装的python3 链接:... File-Settings-Project: untitled8-Project Interpreter,选择python编译器 2. 接口测试知识...
  • 2019 Python接口自动化测试框架实战开发(一)

    万次阅读 多人点赞 2019-06-28 15:55:25
    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!...整个项目分为四个部分:接口基础丶接口开发丶Unittest与接口测试结合以及接口自动化框架从设计到开发 接口基础包括:H...
  • python接口自动化测试框架---包括请求的封装、数据库操作、多断言、ddt数据驱动、多种请求方式等
  • 基于Python接口自动化框架
  • 基于Python语言的接口自动化框架以及实现源码,包含单个接口自动化,多个接口关联自动化实现
  • 完整的框架源码下载...一、Python+unittest+requests+HTMLTestRunner 完整的接口自动化测试框架搭建_00——框架结构简解 首先配置好开发环境,下载安装Python并...
  • 利用下班之后的空余时间和周六周天,通过看博客、搜资料终于把接口自动化测试框架搭建好了,使用python+requests+pytest+yaml+allure实现了接口自动化测试,并进行调试,成功调通公司的项目接口,我是学习并借鉴下面...
  • 本文总结分享介绍接口测试框架开发,环境使用python3+selenium3+unittest+ddt+requests测试框架及ddt数据驱动,采用Excel管理测试用例等集成测试数据功能,以及使用HTMLTestRunner来生成测试报告,目前有开源的poman...
  • 文章目录1.接口测试框架的价值2....降低人工的工作成本,可以通过框架自动自动运行,提高人工的产能 3.复用 框架可以应对多种不同的接口测试工作的需求,适用性和扩展性强 4.规范 对接口测试成功物...
  • 将测试用例写在excel表格里,通过程序实现自动化运行测试用例,将错误日志打印在log里。是根据一个开源项目改了一些代码,正确填好interface测试用例表格之后就能正常运行。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,205
精华内容 882
关键字:

python接口自动化框架

python 订阅