接口自动化测试流程:需求分析-用例设计--脚本开发--测试执行--结果分析
1.获取接口文档,根据文档获取请求方式,传输协议,请求参数,响应参数,判断测试是否通过设计用例
2.脚本开发:使用requests模块进行接口调用
  request内容包含什么?
① 封装了各种请求类型,get、post 等;
② 以关键字参数的方式,封装了各种请求参数,params、data、headers、token 等;
③ 封装了响应内容,status_code、json()、cookies、url 等;
④ session 会话对象,可以跨请求。
3.使用unitest执行测试,编写断言进行结果校验
4.发送邮件报告
5.结合测试报告进行结果分析 数据校验(方便维护)
1.连接数据库,操作数据库
2.testsql.py 写查询sql,数据校验(断言sql查询与api返回校验)
3.testapi测试接口 关于测试数据总结:
1.对于全部是独立的接口项目,可以用数据驱动方式,用excel管理测试的接口数据
2.对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机数生成
3.对于一个接口有多组测试参数,可以参数化,数据存yaml,text,json、excel都可以
4.对于可以反复使用的数据,比如订单的各种状态需要造数据的情况下,可以放到数据库,每次数据初始化,用完在清理
5.对于账号密码,邮箱配置的全局参数,可以用命令行参数,写到配置文件
6.对于少量的静态数据,比如一个接口的测试数据,可以写到py文件的开头
封装读取excel,返回字典
import xlrd
from conf import *
class ExcelUtil(): '''从excel中获取测试用例,输出结果为[{列名1:第一列1,列名2:第一列2}, {列名1:第二列1,列名2:第二列2}...]'''
    def __init__(self, excelPath, sheetIndex=0):
self.data = xlrd.open_workbook(excelPath)
self.table = self.data.sheet_by_index(sheetIndex)
# 获取第一行作为key值
self.keys = self.table.row_values(0)
# 获取总行数
self.rowNum = self.table.nrows
# 获取总列数
self.colNum = self.table.ncols def dict_data(self):
if self.rowNum <= 1:
print("总行数小于1")
else:
r = []
j = 1
for i in list(range(self.rowNum-1)):
s = {}
# 从第二行取对应values值
s['rowNum'] = i+2
values = self.table.row_values(j)
# print(values)
for x in list(range(self.colNum)):
s[self.keys[x]] = values[x]
r.append(s)
j += 1
return r if __name__ == "__main__":
filepath = xlsPath+'/test.xlsx'
sheetIndex = 0
data = ExcelUtil(filepath, sheetIndex)
print(data.dict_data())
返回结果:
[{'姓名': 1.0, '年龄': 18.0}, {'姓名': 1.0, '年龄': 20.0}]

使用ddt数据驱动读取Excel数据
数据驱动原理:
1.测试数据为多个字典的list类型 list = [{"a":1},{"b":1}] list = [1,2,3,4]
2.测试类前加修饰@ddt.ddt
3.case前加修饰@ddt.data(数据) #usr/bin/python
#encoding:utf-8
from ddt import ddt, data, unpack
import unittest
from debug import ExcelUtil
from conf import *
filepath = xlsPath + '/test.xlsx'
sheetIndex = 0
s = ExcelUtil(filepath, sheetIndex).dict_data()
@ddt
class DoubanTest(unittest.TestCase):
@classmethod
def setUp(self):
print("****Start Test*******")
@classmethod
def tearDown(self):
print("****End Test*******")
# @data([1, 2, 3, 6])
# @unpack
# def test_add(self,testdata1,testdata2,testdata3,exceptdata):
# sum = testdata1 + testdata2 + testdata3
# self.assertEqual(sum,exceptdata)
@data(*s)
def test_print(self,a):
print(a)
if __name__=='__main__':
unittest.main()
返回结果:

****Start Test*******
{'rowNum': 2, '姓名': 1.0, '年龄': 18.0}
****End Test*******
****Start Test*******
{'rowNum': 3, '姓名': 1.0, '年龄': 20.0}
****End Test*******

												

python+ddt+unittest+excel+request实现接口自动化的更多相关文章

  1. Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架

    整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport  多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...

  2. Python+requests+unittest+excel实现接口自动化测试框架

    一.框架结构:  工程目录 二.Case文件设计 三.基础包 base 3.1 封装get/post请求(runmethon.py) import requests import json class ...

  3. Python+requests+unittest+excel实现接口自动化测试框架(摘录)

    一.框架结构:  工程目录 二.Case文件设计 三.基础包 base 3.1 封装get/post请求(runmethon.py) 1 import requests 2 import json 3 ...

  4. Python+requests+unittest+excel实现接口自动化测试框架(转

    一.框架结构:工程目录 二.Case文件设计三.基础包 base 3.1 封装get/post请求(runmethon.py) import requests import json class Ru ...

  5. python DDT读取excel测试数据

    转自:http://www.cnblogs.com/nuonuozhou/p/8645129.html ddt   结合单元测试一起用 ddt(data.driven.test):数据驱动测试 由外部 ...

  6. 基于Python+Requests+Pytest+YAML+Allure实现接口自动化

    本项目实现接口自动化的技术选型:Python+Requests+Pytest+YAML+Allure ,主要是针对之前开发的一个接口项目来进行学习,通过 Python+Requests 来发送和处理H ...

  7. java、python及jmeter操作redis(接口自动化必备)

    redis是nosql数据库之一,其存储结构简单,提供高性能服务,所以在架构中是很常用的. 在做接口自动化测试过程中,有时也会涉及到redis,比如:发送短信验证码,我们做接口自动化测试,如何模拟发送 ...

  8. python + selenium + unittest实现简单的UI自动化

    使用的版本是python 3,其中HTMLTestRunner是修改版本,参考以下博客并下载 https://blog.csdn.net/zhanin123/article/details/78950 ...

  9. python如何读写EXCEL文档 (有助于自动化的参数化,用的方法是XLRD,XLWT)

    读EXCEL: import xlrd 例1, data=xlrd.open("E:\egg.xls")     # 打开xls文件 table=data.sheets()[0] ...

随机推荐

  1. Azure DevOps Server (TFS) 修改工作项附件大小限制

    1. 问题描述 当上传工作项附件时,系统提示"附件大小限制" 2.解决方案 2.1 默认设置 默认情况下,Azure DevOps Service和Team Foundation ...

  2. logstash设置开机自启动

    本篇文件前提是在centos7.6上使用rpm包安装的logstash,添加systemd方式启动. #默认为rpm包安装,进行执行目录 cd /usr/share/logstash/bin/ #系统 ...

  3. Flume+Kafka+Storm+Redis 大数据在线实时分析

    1.实时处理框架 即从上面的架构中我们可以看出,其由下面的几部分构成: Flume集群 Kafka集群 Storm集群 从构建实时处理系统的角度出发,我们需要做的是,如何让数据在各个不同的集群系统之间 ...

  4. C中关键字inline用法

    一.什么是内联函数 在C语言中,如果一些函数被频繁的调用,不断地用函数入栈,即函数栈,则会造成栈空间或者栈内存的大量消耗,为了解决这个问题,特别的引入了inline关键字,表示为内联函数.栈空间指的是 ...

  5. BBC micro:bit引脚介绍

    另外两个大引脚(3V和GND)是非常不同的! 注意 标记为3V和GND的引脚与电路板的电源相关,千万不要连接在一起. 电源输入:如果BBC micro:bit由USB或电池供电,则可以使用3V引脚作为 ...

  6. javascript 忍者秘籍读书笔记(二)

    闭包的私有变量 function Ninja() { let feints = 0; this.getFeints = function () { return feints }; this.fein ...

  7. 分享一个Linux C++消息通信框架TCPSHM

    由于本人从事行业关系,Linux环境下的低延迟通信是我关注的技术之一.要达到极端的低延迟,当然同机器内IPC比网络通信快,而Linux IPC方式中无疑是共享内存延迟最低.不过相对于TCP这种通用的通 ...

  8. Django 模板语言 条件判断

    Django 模板语言 条件判断 ############### 条件 ################## # view 文件 def func(request): ... return rende ...

  9. 推荐一个GOLANG入门很好的网址

    推荐一个GOLANG入门很好的网址,栗子很全 https://books.studygolang.com/gobyexample/

  10. swiper4基础

    这段时间在公司实习做前端,感觉前端没学习到很多前端框架,接口那些都是写好的,只需要调用就好,感觉没什么好记的,唯一觉得有必要记的就是swiper轮播了,在前端做网站的时候经常用到swiper做公告,图 ...