html数据驱动,Python+Excel+Unittest+HTMLTestRunner实现数据驱动接口自动化测试(一)...

整个流程:

使用HTMLTestRunner的Run方法执行用例,用例调用Excel读取方法,将测试数据导入到unittest用例中执行,测试结果返回给HTMLTestRunner。

因为刚接触接口自动化,写的比较简单。后面也会考虑加一个请求类型的封装,excel测试数据也会增加一些字段(如用例是否运行,是否带Headers、cookie,

case依赖,关联数据库,增加日志,定制化HTML,测试结果自动发送邮件等),搞完后再分享出来。

整个目录结构:

ae260dc28e35364ec4df81119f7579a4.png

---common 存放公共库

---testcase

---testdata 存放excel测试数据

---testreport 存放测试报告

---Run_tests 启动测试

1. Run_tests.py

使用discover方法构造测试集,用HTMLTestRunner的run()方法启动测试集并生成测试报告。

import time, sys

sys.path.append('./testcase')

sys.path.append('./common')

from HTMLTestRunner import HTMLTestRunner

from unittest import defaultTestLoader

# 指定测试用例为当前文件夹下的 testcase 目录

test_dir = './testcase'

testsuit = defaultTestLoader.discover(test_dir, pattern='*_test.py')

if __name__ == "__main__":

now = time.strftime("%Y-%m-%d %H_%M_%S")

filename = './testreport/' + now + '_result.html'

fp = open(filename, 'wb')

runner = HTMLTestRunner(stream=fp,

title='System Interface Auto Test Report',

description='Test Result')

runner.run(testsuit)

fp.close()

2. 测试Excel档如下:

f5891a9074016fe7dd0f055bd03da09d.png

使用公共库中的OperateExcel方法读取,通过excel名和sheet名返回测试数据的列表集合。

def Readexcelrow_of_sheet(filename,sheet_name,row):

'''返回某个sheet中某一行数据的列表'''

folder = "C:\\Users\\LENOVO\\PycharmProjects\\Apiautotest-master\\testdata\\"

fullfilename = folder + filename

rb = xlrd.open_workbook(fullfilename)

sheet = rb.sheet_by_name(sheet_name)

datalist = []

for i in range(8):

try:

data = sheet.cell_value(row,i)

datalist.append(data)

except TypeError as f:

break

#print (datalist)

return datalist

def Readexcelalldata_of_sheet(filename,sheet_name):

'''返回整个sheet的内容的列表'''

datalistlist =[]

for i in range(1,100):

try:

data = Readexcelrow_of_sheet(filename,sheet_name,i)

datalistlist.append(data)

except IndexError as e:

break

return datalistlist

3. testcase调用该方法读取测试数据后,取出测试数据循环进行request测试,对测试结果进行断言

def test_login(self):

self.testcasecount = len(self.testcaseinfo)

for i in range(len(self.testcaseinfo)):

data = self.testcaseinfo[i]

#print (data)

url = data[3]

payload = data[4].encode('utf-8')

expectedcode = data[5]

expectedmsg = data[6]

expecteddata = data[7]

headers= {"Content-Type": "application/json"}

r = requests.post(url,data=payload,headers=headers)

self.result = r.json()

self.assertEqual(self.result['code'], expectedcode,msg="code断言失败")

self.assertEqual(self.result['msg'], expectedmsg,msg="msg断言失败")

if expecteddata != "":

print ("检查data字段")

self.assertEqual(str(self.result['data']), expecteddata,msg="data断言失败")

4.测试完成后生成测试报告,报告中可以体现出测试异常的原因。

22a7e218441c274fd03573fe6beb244b.png

目前还有个问题:

unittest中实际运行了一个借口的很多条用例,而报告中只会有一条记录。这是因为unittest test case中我只写了一个test方法,循环测试数据。这样写用例更简单,目前在想是从报告中处理,还是测试用例读取部分进行处理。

有想法欢迎给我留言,谢谢。

Python+Excel+Unittest+HTMLTestRunner实现数据驱动接口自动化测试(二)

因为小白,这2天研究了好久才算是搞好.先附上一个测试完成后邮件的截图: 上一篇有提到: unittest中实际运行了一个接口的很多条用例,而报告中只会有一条记录.这是因为unittest test c ...

接口自动化 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)

基于python实现的http+json协议接口自动化测试框架(实用改进版)   by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436     目录 1.      ...

python+unittest+requests+HTMLRunner编写接口自动化测试集

问题描述:搭建接口测试框架,执行用例请求多个不同请求方式的接口 实现步骤: ① 创建配置文件config.ini,写入部分公用参数,如接口的基本url.测试报告文件路径.测试数据文件路径等配置项 [D ...

Python+Selenium+Unittest+HTMLTestRunner生成测试报告+发送至邮箱,记一次完整的cnblog登录测试示例,

测试思路:单个测试集.单个测试汇成多个测试集.运行测试集.生成测试报告.发送至邮箱. 第一步:建立单个测试集,以cnblog登录为例. 测试用例: cnblog的登录测试,简单分下面几种情况:(1)用 ...

Python Selenium unittest+HTMLTestRunner实现 自动化测试及发送测试报告邮件

1.UI测试框架搭建-目录结构 2. 文件介绍 2.1.baseinfo->__init__.py 配置文件定义基础参数 #-*-coding:utf-8-*- #测试用例配置参数 base_u ...

python用unittest+HTMLTestRunner+csv的框架测试并生成测试报告

直接贴代码: import csv  # 导入scv库,可以读取csv文件from selenium import webdriverimport unittestfrom time import s ...

python用unittest+HTMLTestRunner的框架测试并生成测试报告

直接贴代码: import unittestfrom selenium import webdriverfrom time import sleepimport osimport time # 定义打 ...

python+request+unittest+HTMLTestRunner

https://www.imooc.com/article/details/id/20813 https://www.cnblogs.com/fennudexiaoniao/p/7771931.htm ...

python - 接口自动化测试实战 - case1 - 再次优化版

本次优化: 1.  各级分Package 2.  封装[ReadExcel]类 3.  封装[ReadConfig]类 4.  封装[GetLog]类 5.  引入ddt数据驱动测试,优化测试用例代码 ...

随机推荐

[译]Canvas的基本用法

在本文章中 元素 替换内容 标签不可省 渲染上下文(The rendering context如何翻译) 检查支持性 一个模板骨架 一个简 ...

《JavaScript 闯关记》之 DOM(下)

Element 类型 除了 Document 类型之外,Element 类型就要算是 Web 编程中最常用的类型了.Element 类型用于表现 XML 或 HTML 元素,提供了对元素标签名.子节点 ...

Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践

我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实 ...

iOS presentViewController 方法引起的问题

有个需求,在项目中随时使用 presentViewController来显示一个界面,比如弹窗提示或者人脸解锁,都是在任何情况都可能出现的. 在presentViewController 调用前,已经 ...

CentOS6.3上搭建expect无交互开发环境

1.背景 在面向shell编程时对于需要交互的场合则必须通过人工来干预,而对于这种方式是违反无人职守的原则:现在expect就解决了这个问题, Expect是一个免费的编程工具语言,用来实现自动和交互 ...

五款实用免费的Python机器学习集成开发环境(5 free Python IDE for Machine Learning)(图文详解)

前言 集成开发环境(IDE)是提供给程序员和开发者的一种基本应用,用来编写和测试软件.一般而言,IDE 由一个编辑器,一个编译器(或称之为解释器),和一个调试器组成,通常能够通过 GUI(图形界面)来 ...

关于Maven项目build时出现No compiler is provided in this environment的处理(转)

本文转自https://blog.csdn.net/lslk9898/article/details/73836745 近日有同事遇到在编译Maven项目时出现[ERROR] No compiler ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值