python web自动化测试框架搭建(功能&接口)——接口用例实现
测试用例基类:
# 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('<','<').replace('>','>') 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自动化测试框架搭建(功能&接口)——接口公共方法
接口公共方法有:数据引擎.http引擎.Excel引擎 1.数据引擎:获取用例.结果检查.结果统计 # -*- coding:utf-8 -*- from XlsEngine import XlsEn ...
- python web自动化测试框架搭建(功能&接口)——接口测试模块
Python接口测试采用python读取excel的方法,通过requests库发送请求和接收响应.模块有: Data:用于存放excel用例的,用例格式: iutil: 接口公共方法,数据引擎.ht ...
- python web自动化测试框架搭建(功能&接口)——功能测试模块
功能测试使用selenium,模块有: 1.futil: 公共方法,如元素高亮显示 # coding=utf-8 """高亮显示元素""" ...
- python web自动化测试框架搭建(功能&接口)——测试用例执行和结果收集
由于unittest框架中结果收集在不同文件中,所以此处重写结果收集方法,加入执行时间,失败信息,失败截图等 TestRunner.py # coding=utf-8 import sys impor ...
- python web自动化测试框架搭建(功能&接口)——通用模块
1.通用模块: config.conf: 公共配置文件,配置报告.日志.截图路径,以及邮件相关配置 [report] reportpath = E:\workspace\WebAutomation\s ...
- Python web自动化测试框架搭建(功能&接口)——unittest介绍
Python UnitTest测试框架介绍 1) TestCase:所有测试用例类继承的基本类, TestCase的实例就是测试用例 2) TestSuite:测试套件 ...
- python web自动化测试框架搭建(功能&接口)——环境搭建
自动化测试框架一般需要实现以下通用功能 执行前准备 结束后清理 执行步骤输出 执行结果输出 错误.失败截图 测试报告 发送邮件 日志 需要的软件和python第三方库有: 通用: JDK Eclips ...
- 基于python的自动化测试框架搭建
滴~ 今日打卡! 好多天没来打卡了.博主最近一直在把碎片化知识转化为知识体系的过程中挣扎.Python语言.selenium.unittest框架.HTMLTestRunner框架都有所了解,也写 ...
- selenium +python web自动化测试环境搭建
基础框架搭建 1.安装python 2.安装selenium cmd输入pip install selenium 问题:在python中输入from selenium import webdriver ...
随机推荐
- js获取指定字符后面的字符
function getCaption(obj){ var index=obj.lastIndexOf("\-"); obj=obj.substring(index+1,obj.l ...
- AtCoder Beginner Contest 133 -D — Rain Flows into Dams
(https://atcoder.jp/contests/abc133/tasks/abc133_d) 思路:每座山为2Xi,每个坝为Ai.已知Ai,求出2Xi. 根据已知的X1,则可分别求出X2-n ...
- hdu6351 Beautiful Now (全排列+循环节)
题目传送门 题意: 给你n和k,你每次能交换n的两个位,问最多k次后的最小和最大值 思路: 考虑到n到1e9,所以可以用全排列来暴力,但是我们不能全排列之前的数位, 因为n中的位数可能相等,那样很难计 ...
- Python 内置函数raw_input()和input()用法和区别
我们知道python接受输入的raw_input()和input() ,在python3 输入raw_input() 去掉乐,只要用input() 输入,input 可以接收一个Python表达式作为 ...
- -webkit-overflow-scrolling:touch介绍和碰到的坑
1.作用 可控制元素在移动设备有滚动回弹效果,可惯性滚动 2.适应场景 在ios移动端上,设置容器overflow-y:scroll;使容器内元素滚动时,滑动会很卡顿,使用-webkit-overfl ...
- Python 数据分析中常用的可视化工具
Python 数据分析中常用的可视化工具 1 Matplotlib 用于创建出版质量图表的绘图工具库,目的是为 Python 构建一个 Matlab 式的绘图接口. 1.1 安装 Anaconada ...
- 微信jssdk配置的问题,使用MVC制作的demo
一,view代码 <script src="~/Scripts/jquery-3.3.1.js"></script> <script src=&quo ...
- 【JAVA】input.next().charAt(0);的含义
接收键盘输入的字符串,并且取出它的第一个字符. 分析: Scanner scan=new Scanner(System.in); String s=scan.next(); //返回一个String ...
- Java JNA (四)—— void**、void*、char**、char*、int*等类型映射关系及简单示例
ByReference类有很多子类,这些类都非常有用. ByteByReference.DoubleByReference.FloatByReference. IntByReference.LongB ...
- bootstrap-table使用stickyHeader固定表头时,表头不跟随表体水平滚动问题解决
解决方法: onAll: function () { // 修复stickyHeader表头不跟随表体水平滚动的问题 if (params.stickyHeader) { var fixedTable ...