做一个将参数和用例分开放置,并且输出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如下

request,logging,ConfigParser——接口框架的更多相关文章

  1. net 面向接口框架

    Asp.net 面向接口框架之应用程序上下文作用域组件 在团队中推广面向接口开发两年左右,成果总体来说我还是挺满意的,使用面向接口开发的模块使用Unity容器配置的功能非常稳定,便于共享迁移(另一个项 ...

  2. 前后端分离后台api接口框架探索

    前言 很久没写文章了,今天有时间,把自己一直以来想说的,写出来,算是一种总结吧!  这篇文章主要说前后端分离模式下(也包括app开发),自己对后台框架和与前端交互的一些理解和看法.     前后端分离 ...

  3. 30行左右代码实现一个类似httprunner的接口框架

    框架的最终归宿往往是领域语言+模板解析. 首先先约定一种所要执行操作的表述格式.然后通过模板解析将描述语言转化为代码进行执行.例如,我们可以使用以下yaml文件描述多个步骤并且需要关联的接口: api ...

  4. python之常用模块二(hashlib logging configparser)

    摘要:hashlib ***** logging ***** configparser * 一.hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 摘要算法 ...

  5. python+request+HTMLTestRunner+unittest接口自动化测试框架

    转自https://my.oschina.net/u/3041656/blog/820023 正在调研使用python进行自动化测试,在网上发现一篇比较好的博文,作者使用的是python3,但目前自己 ...

  6. 接口框架 python+unittest+request+HTMLTestRunner

    request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项.如POST,GET最常用的两种请求 官方文档:http://docs.python-requests.org/en/mas ...

  7. Python + request + unittest实现接口测试框架

    1.为什么要写代码实现接口自动化 大家知道很多接口测试工具可以实现对接口的测试,如postman.jmeter.fiddler等等,而且使用方便,那么为什么还要写代码实现接口自动化呢?工具虽然方便,但 ...

  8. python+request+robot framework接口自动化测试

    python+requests实现接口的请求前篇已经介绍,还有不懂或者疑问的可以访问 python+request接口自动化框架 目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出,通过关键字的 ...

  9. python开发模块基础:异常处理&hashlib&logging&configparser

    一,异常处理 # 异常处理代码 try: f = open('file', 'w') except ValueError: print('请输入一个数字') except Exception as e ...

随机推荐

  1. echo图片延迟加载js

    插件描述:和 Lazy Load 一样,Echo.js 也是一个用于图像延迟加载 JavaScript.不同的是 Lazy Load 是基于 jQuery 的插件,而 Echo.js 不依赖于 jQu ...

  2. 安卓apk重新签名教程

    可能大家会有疑问,为什么安卓apk文件要重新签名,签名后有什么作用.这里我简单说一下,如果大家一直都是用官方的app的话那是不需要重新签名的.重新签名是对官方app进行了修改(如icon.图片.代码等 ...

  3. 替代alert的消息框和提示框

    alert提示框由于外观不太友好,所以一般都不用alert了. 我在这里使用bootstrap的样式,写了一个可以单独显示消息,也可以确认取消的提示框,确认,取消的采用模式对话框方式,用一个div遮盖 ...

  4. C# char[]与string互相转换的两种方法

    1.string转换为char[]:char[] string.ToCharArray(); static void Main(string[] args)        {            s ...

  5. shell习题第7题:备份数据库

    [题目要求] 设计一个shell脚本用来备份数据库,首先在本地服务器上保存一份数据,然后再远程拷贝一份,本地保存一周的数据,远程保存一个月 假设我们知道mysql root账号的密码,要备份的库为da ...

  6. 基于CLGeocoder - 反地理编码

    iOS中CoreLocatio框架中的CLGeocoder 类不但为我们提供了地理编码方法,而且还提供了反地理编码: 同样需要导入框架: #import <CoreLocation/CoreLo ...

  7. react-navigation的超级大坑

    本文针对react-navigation^3.0.0版本,版本不对的话,请不要看本文,直接看官方英文文档 ​ 最近一直在学习RN,没找到什么好的视频,所以一直看文档,一路上来虽然遇到一些乱七八糟的bu ...

  8. 搭建lamp或者lnmp环境,本地链接mysql报错解决方法

    报错:1130-host...is not allowed to connect to this mysql server 解决方法: 1.改表法 可能是你的账号不允许从远程登录,这个时候只要进入服务 ...

  9. svn文件管理

    将VS2010工程提交给Git管理时需要哪些文件:    *.h  *.cpp  *.sln  *.vcxproj  *.vcxproj.filters  *.qrc以及Resources目录下的资源 ...

  10. BZOJ 小Z的袜子 2038 国家集训队

    过程: 想了很久如何求组合数C(n,m),然而 YL 同学提醒了可以直接除以 2*n*(n - 1 ).改了之后果然对了,以为一定是一次性AC 了,然而 WA 了3次,尴尬 —— 神 TM,ZC 苟看 ...