接口自动化测试流程:需求分析-用例设计--脚本开发--测试执行--结果分析
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. ASP.NET Core使用Docker-Swarm集群部署实现负载均衡实战演练

    一.需求背景 人生苦短,我用.NET Core!阿笨对Docker是这样评价的:Docker在手,环境我有!Docker出手,集群我有!前面的Doc基础课程我们学习了如何使用Docker来部署搭建单机 ...

  2. Linux+Nginx+Supervisor部署ASP.NET Core实操手册

    一.课程介绍 在上一节课程<ASP.NET Core托管和部署Linux实操演练手册>中我们学过net core的部署方式多样性和灵活性.我们通过远程工具输入dotnet 程序集名称.dl ...

  3. A Philosophy of Software Design

    关于复杂性,尚无统一的定义,从不同的角度可以给出不同的答案.可以用数量来度量,比如芯片集成的电子器件越多越复杂(不一定对):按层次性[2]度量,复杂度在于层次的递归性和不可分解性.在信息论中,使用熵来 ...

  4. ssh密码登录+ Google Authenticator 实现双向认证

    通常我们直接通过ssh输入密码连接服务器,但这样很容易出现暴力破解情况,所以我们可以结合google的动态认证+ssh密码,这样能够大大的提升登陆的安全. 简单来说,就是当用户通过ssh登陆系统时,先 ...

  5. TreeMap源码分析2

    package map; import org.junit.Test; import com.mysql.cj.api.x.Collection; import map.TreeMap1.Ascend ...

  6. AKKA Router路由

    路由概念 大量的actor在并行工作的时候,处理到来的消息流,这时候就需要一个组件或者东西来引导消息从源到目的地Actor,这个组件或者东西就是Router在Akka中,router也是一种actor ...

  7. 简易版php文件上传_超详细详解

    1.php简化版的图片上传(没有各种验证) 1234 <form action="" enctype="multipart/form-data" meth ...

  8. Linux 中mysql安装(源码安装方式)

    本文是介绍以源码安装的方式编译和安装Mysql 5.6(可以指定安装路径),也可以不采用源码安装方式,直接用安装包的方式. 源码安装方式慎用,容易报错. 1.卸载旧版本 rpm -qa | grep ...

  9. SocketChannel简述

    前言 在前面的Channel概述的分类中提到过SocketChannel主要是用来基于TCP通信的通道.这篇文章详细介绍下SocketChannel SocketChannel是什么 SocketCh ...

  10. 打印出三位数的水仙花数Python

    水仙花数计算 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪ ...