测试用例基类:

# coding=utf-8

import unittest
import Logger log = Logger.Loger()
class BaseCase(unittest.TestCase): def setUp(self):
self.loginfo("============================================================")
self.loginfo("%s is start" % self )
#print self._attribute.decode('utf=8') def tearDown(self):
self.loginfo('test is stop')
self.loginfo("============================================================\n") def loginfo(self, msgStr):
log.info(msgStr) if __name__ == "__main__":
unittest.main()

接口用例InterfaceTestCase.py

#coding=utf-8
import unittest
import requests
from interfacetest.iutil import DataEngine
from interfacetest.iutil import HttpEngine
from IFBaseCase import BaseCase
import datetime
import Utils
import ConfigParser class DoInterfaceTest(BaseCase): def runTest(self):
sttime = datetime.datetime.now()
domain,caselist,header = DataEngine.getCase() #读取Excel获取用例数据
self.loginfo("domain:"+domain)
self.loginfo("header:"+str(header)+"\n")
resultlist = [] for case in caselist:
'''
case[0] 序号 case[1] 优先级 case[2] 模块 case[3] 用例描述 case[4] 是否登录
case[5] 接口url case[6] 方法 case[7] 参数 case[8] 期望结果
'''
self.loginfo("url:"+case[5])
self.loginfo("method:"+case[6]) starttime = datetime.datetime.now()
url = domain+case[5] #拼接请求url
method = case[6] #请求方法:post、get、delete
data = eval(case[7]) #请求数据 sess=object
isexcept = False
if case[4] == "Y": #是否需要登录
sess,isexcept = HttpEngine.login() #返回登录的session和登录是否异常
else:
sess = requests.Session() result = "Failed"
actualre = ""
if isexcept: #如果登录异常,直接中断
actualre = sess
else: #没有登录异常,继续执行
re,isexcept = HttpEngine.getData(sess, url, data, header, method) #发送请求并获取响应结果
if isexcept: #如果请求异常,直接中断
actualre = re
else:
result,actualre = DataEngine.resultCheck(re, case[8]) #结果匹配 if "password" in case[7]:
temp = eval(case[7])
temp['password'] = "******"
case[7] = temp
self.loginfo("data:"+str(case[7]))
self.loginfo("结果:"+result+", 请求返回:"+actualre+"\n") stoptime = datetime.datetime.now()
takentime = ((stoptime-starttime).microseconds)/1000 #获取时间差,单位为毫秒
if len(actualre) > 43:
actualre = actualre[:43]+" ..."
actualre = actualre.replace('<','&lt;').replace('>','&gt;') result_temp = [case[2], case[3], case[5], case[7], actualre, result, takentime]
resultlist.append(result_temp)
sptime = datetime.datetime.now()
passcount,failcount = DataEngine.countResult(resultlist) #统计结果
totalcount = len(resultlist)
tktime = ((sptime-sttime).microseconds)/1000/1000.000 #整体耗时,单位为秒
sttime = sttime.strftime("%Y-%m-%d %H:%M:%S")
tinfo = {'starttime':sttime, 'takentime':tktime, 'pass':passcount, 'fail':failcount, 'total':totalcount}
conf = ConfigParser.ConfigParser()
conf.read("config.conf")
reportfile = conf.get("report", "report_path")
logfile = conf.get("report", "log_path")
Utils.createInterfaceReport(resultlist, tinfo, reportfile, logfile) if __name__ == "__main__":
unittest.main()

Python web功能&接口自动化测试框架搭建——接口用例实现

Python web功能&接口自动化测试框架搭建——接口公共方法

Python web功能&接口自动化测试框架搭建——接口测试模块

Python web功能&接口自动化测试框架搭建——功能测试模块

Python web功能&接口自动化测试框架搭建——测试用例执行和结果收集

Python web功能&接口自动化测试框架搭建——通用模块

Python web功能&接口自动化测试框架搭建——unittest介绍

Python web功能&接口自动化测试框架搭建——环境搭建

python web自动化测试框架搭建(功能&接口)——接口用例实现的更多相关文章

  1. python web自动化测试框架搭建(功能&接口)——接口公共方法

    接口公共方法有:数据引擎.http引擎.Excel引擎 1.数据引擎:获取用例.结果检查.结果统计 # -*- coding:utf-8 -*- from XlsEngine import XlsEn ...

  2. python web自动化测试框架搭建(功能&接口)——接口测试模块

    Python接口测试采用python读取excel的方法,通过requests库发送请求和接收响应.模块有: Data:用于存放excel用例的,用例格式: iutil: 接口公共方法,数据引擎.ht ...

  3. python web自动化测试框架搭建(功能&接口)——功能测试模块

    功能测试使用selenium,模块有: 1.futil: 公共方法,如元素高亮显示 # coding=utf-8 """高亮显示元素""" ...

  4. python web自动化测试框架搭建(功能&接口)——测试用例执行和结果收集

    由于unittest框架中结果收集在不同文件中,所以此处重写结果收集方法,加入执行时间,失败信息,失败截图等 TestRunner.py # coding=utf-8 import sys impor ...

  5. python web自动化测试框架搭建(功能&接口)——通用模块

    1.通用模块: config.conf: 公共配置文件,配置报告.日志.截图路径,以及邮件相关配置 [report] reportpath = E:\workspace\WebAutomation\s ...

  6. Python web自动化测试框架搭建(功能&接口)——unittest介绍

    Python UnitTest测试框架介绍 1)         TestCase:所有测试用例类继承的基本类, TestCase的实例就是测试用例 2)         TestSuite:测试套件 ...

  7. python web自动化测试框架搭建(功能&接口)——环境搭建

    自动化测试框架一般需要实现以下通用功能 执行前准备 结束后清理 执行步骤输出 执行结果输出 错误.失败截图 测试报告 发送邮件 日志 需要的软件和python第三方库有: 通用: JDK Eclips ...

  8. 基于python的自动化测试框架搭建

    滴~ 今日打卡!   好多天没来打卡了.博主最近一直在把碎片化知识转化为知识体系的过程中挣扎.Python语言.selenium.unittest框架.HTMLTestRunner框架都有所了解,也写 ...

  9. selenium +python web自动化测试环境搭建

    基础框架搭建 1.安装python 2.安装selenium cmd输入pip install selenium 问题:在python中输入from selenium import webdriver ...

随机推荐

  1. 剑指Offer编程题(Java实现)——替换空格

    题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 解题思路1 在字符串尾部填充任 ...

  2. nginx 499错误

    原因: 服务响应时间太长,客户端自动断开链接. 解决: 1. 找到响应世间长的接口,看依赖的数据源(数据库,第三方接口等)响应时间是否超时,还是自己程序有逻辑问题. 可以通过加入日志打印时间消耗来确定 ...

  3. Acwing‘803. 区间合并

    (https://www.acwing.com/problem/content/805/) 给定 nn 个区间 [li,ri][li,ri],要求合并所有有交集的区间. 注意如果在端点处相交,也算有交 ...

  4. python pickle模块的用法

    pickle用于python特有的类型,和python的数据类型间进行转换,提供四个功能 dumps,dump,loads,load. pickle 的用法 #pickle.dumps 将数据通过特殊 ...

  5. Log4Net 之走进Log4Net (四)

    原文:Log4Net 之走进Log4Net (四) 一.Log4net的结构 log4net 有四种主要的组件,分别是Logger(记录器), Repository(库), Appender(附着器) ...

  6. 05-CSS浮动、定位、页面布局

    # 浮动 ### 文档流文档流,是指盒子按照html标签编写的顺序依次从上到下,从左到右排列,块元素占一行,行内元素在一行之内从左到右排列,先写的先排列,后写的排在后面,每个盒子都占据自己的位置. # ...

  7. DAG

    DAG的生成 DAG(Directed Acyclic Graph) 叫做有向无环图,原始的RDD通过一系列的转换就形成了DAG,根据RDD之间的依赖关系的不同将DAG划分成不同的Stage,对于窄依 ...

  8. node+mysql+express实现登录/注册/修改密码/删除用户 接口

    实现用户的注册.登录.修改密码.删除用户操作 用到的数据库:nodecms:表:user 目录结构: db目录下存放数据库操作语句: userSQL.js 用户有关的操作语句 router目录 接口路 ...

  9. [好好学习]在VMware中安装Oracle Enterprise Linux (v5.7) - (5/5)

  10. HashMap、Hashtable和ConcurrentHashMap的区别

    HashTable 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相 ...