做一个将参数和用例分开放置,并且输出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. Selenium自动化测试之数据驱动及用例管理

    Selenium自动化测试之数据驱动及用例管理 一.TestNg注解介绍 @Test:表示一个测试方法,在运行测试用例过程中,会自动运行@Test注解的方法. 例:

  2. ubuntu配置telnet服务

    1.安装xinetd 以及telnetd #:~$ sudo apt-get install xinetd telnetd 2.配置文件(若文件不存在就手动添加文件和相应配置信息) 1): #:~$ ...

  3. spring学习笔记---数据库事务并发与锁详解

    多事务运行并发问题 在实际应用中,往往是一台(或多台)服务器向无数客户程序提供服务,当服务器查询数据库获取数据时,如果没有采用必要的隔离机制,可能会存在数据库事务的并发问题,下面是一些常见的并发问题分 ...

  4. 微服务之配置中心ConfigKeeper

    在微服务架构中,配置中心是必不可少的基础服务.ConfigKeeper已开源,本文将深度分析配置中心的核心内容,错过「Spring Cloud中国社区北京沙龙-2018.10.28 」的同学将从本篇文 ...

  5. HashMap源码阅读与解析

    目录结构 导入语 HashMap构造方法 put()方法解析 addEntry()方法解析 get()方法解析 remove()解析 HashMap如何进行遍历 一.导入语 HashMap是我们最常见 ...

  6. java String详解

    创建字符串: 1. String(char a[]) char a[] = {'g','o','o','d'}; String str = new String(a); 2. String(char ...

  7. Web | Webpack快速上手

    概述 Webpack 是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. 一般我们在开发中都是使用终端去进行安装,使用npm,关于npm ...

  8. MySQL学习【第十二篇事务中的锁与隔离级别】

    一.事务中的锁 1.啥是锁? 顾名思义,锁就是锁定的意思 2.锁的作用是什么? 在事务ACID的过程中,‘锁’和‘隔离级别’一起来实现‘I’隔离性的作用 3.锁的种类 共享锁:保证在多事务工作期间,数 ...

  9. cookie,session,token

    发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应,  尤其是我不用 ...

  10. 如何使用yii2的缓存依赖特性

    目录 如何使用yii2的缓存依赖特性 概述 页面缓存 缓存依赖 链式依赖 总结 如何使用yii2的缓存依赖特性 概述 缓存是Yii2的强大特性之一,合理使用缓存技术可以有效地减小服务器的访问压力.Yi ...