zoukankan      html  css  js  c++  java
  • request,logging,ConfigParser——接口框架

    做一个将参数和用例分开放置,并且输出log的接口测试框架

    我的框架如下所示

    Log文件用来设置log输出文件,需要时可以在用例内调用输出,config用来填写一切需要的参数信息,jiekou_post_test是我用来写接口测试用例的文件,log是自动输出的log文件,readConfig是读取congfig参数的执行文件

    Log.py

    #encoding=utf-8
    import logging

    from datetime import datetime

    import threading

    class myLog:
      def __init__(self):
        self.logger = logging.getLogger()
        self.logger.setLevel(level = logging.INFO)
        handler = logging.FileHandler("log.txt")
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        handler.setFormatter(formatter)
        self.logger.addHandler(handler)

    config用来存放参数

    readConfig

    # encoding=utf-8
    import os

    import codecs

    import ConfigParser

    proDir = os.path.split(os.path.realpath(__file__))[0]#os.path.realpath(__file__),获取当前执行脚本的绝对路径

    configPath = os.path.join(proDir, "config.ini")

    class ReadConfig:

      def __init__(self):

        fd = open(configPath)

        data = fd.read()

    # remove BOM

        if data[:3] == codecs.BOM_UTF8:#判断是否包含EF BB BF。根据每个字节的开头的固定格式,我们就可以判断是否是UTF8的编码

          data = data[3:]

        file = codecs.open(configPath, "w")#直接用编码打开,防止open打开的编码不一致报错问题

        file.write(data)

        file.close()

        fd.close()

        self.cf = ConfigParser.RawConfigParser()#配置文件的格式是: []包含的叫section, section 下有option=value,可以直接get(section,option)来获取value

        self.cf.read(configPath)

      def get_http(self, name):

        value = self.cf.get("HTTP", name)

        return value

    测试用例文档如下,用try输入一个不存在的IP,这样抓取错误写到log中

    #encoding=utf-8
    import sys
    reload(sys)
    sys.path.append('..')
    from readConfig import ReadConfig
    from common.Log import myLog
    import requests
    import json,time

    #sys.setdefaultencoding("utf-8")
    #print ReadConfig().get_http('url')
    session = requests.session()
    url=ReadConfig().get_http('url')
    #url = "http://home.travelsky.net/publish/zghxnw/index.html"
    params=ReadConfig().get_http('params')
    #headers=ReadConfig().get_http('headers')
    r = session.post(url, data=params,verify=False)
    if u'今天我生日' in r.text:
    print "login success"
    url2=ReadConfig().get_http('url2')
    #url2="http://home.travelsky.net/publish/zghxnw/847/860/863/index.html"
    s = session.get(url2)
    if u'三里屯办公区' in s.text:
    print "link success"
    try:

      response = requests.get(www.dfsfss.com, timeout=float(timeout))#乱写的IP

      print 'response'

    except:
      logger=myLog().logger

      logger.error("Time out!")

    log如下

  • 相关阅读:
    湘湖的雪
    Lua 如何调用C打包的动态库
    自己制作一个USB自动挖矿器
    二十五块DIY 带屏幕可远程的温湿度传感器
    来看下,C# WebService WSDL自动生成代码,数组参数的BUG。。。ArrayOfString
    记一次非常规方法对接硬件设备(Grason Stadler GSI 61)
    京享值超8万的京东钻石用户告诉你套路是这样的
    C# 显示纯文本对齐封装(控制显示字体长度)
    [开源] C# 封装 银海医保的接口
    [开源]使用C# 对CPU卡基本操作封装
  • 原文地址:https://www.cnblogs.com/garvicker/p/10233516.html
Copyright © 2011-2022 走看看