012 python接口 数据驱动ddt

‘‘‘
时间:2018/11/05
目录:
  一: 安装ddt
  二: 禅道登录
        1 工程结构
        2 unittest文件
        3 实现功能文件
        4 执行结果
  三: 使用excel
        1 安装xlrd
        2 准备测试数据
  四: 禅道登录        1 工程结构
        2 unittest文件
        3 实现功能文件        4 read_excel.py
        5 执行结果
‘‘‘

一: 安装ddt

1 : 运行输入"cmd",进入Dos窗口。

2 : 输入"pip install ddt"(安装ddt模块)。

1 : 输入"pip list"(查看安装的库)。

2 : 可以看见已经安装了ddt(1.2.0)。

1 : 输入"pip show ddt"(查看ddt的信息)。

二: 禅道登录
  1 工程结构

  2 unittest文件

# coding:utf-8
import unittest
import ddt
import requests

from DataDriver.chandao_login_api import *

data = [{"user": "admin", "psw": "123456", "expect": True},
        {"user": "admin2", "psw": "123456", "expect": False},
        {"user": "admin", "psw": "123456", "expect": True},
        {"user": "admin4", "psw": "123123", "expect": False}
        ]

@ddt.ddt
class Test(unittest.TestCase):
    def setUp(self):
        self.session = requests.session()

    def tearDown(self):
        self.session.cookies.clear()    # 清除缓存 - cookies
        self.session.close()            # 去除警告 - 关闭进程

    @ddt.data(*data)    # *data : 分组传送 - 字典类型
    def test_001(self, testData):
        strUser = testData["user"]
        strPass = testData["psw"]
        strResult = Login(self.session, strUser, strPass)
        bResult = DecideResult(strResult)
        self.assertTrue(bResult == testData["expect"])

if __name__ == ‘__main__‘:
    unittest.main()

  3 实现功能文件

# coding:utf-8
import requests

url = "http://127.0.0.1/zentao/user-login.htm"  # url经常变 : 做全局变量 - 做配置文件

def Login(session, strUser, strPass):
    ‘‘‘
    登录禅道
    :param session:     session
    :param strUser:     用户名
    :param strPass:     密码
    :return:            请求结果 - 服务端
    ‘‘‘

    body = {
        "account": strUser,
        "password": strPass,
        "keepLogin[]": "on",
        "referer": "/zentao/my.html"
    }
    r = session.post(url, data = body)
    strResult = r.content.decode("utf-8")
    return strResult

def DecideResult(strResult):
    ‘‘‘
    判断结果 - 登录禅道
    :param strResult:  请求结果 - 服务端
    :return:           True - 登录成功
                       Fasle - 登录失败
    ‘‘‘
    if "登录失败" in strResult:
        print("登录失败")
        return False
    elif "parent.location" in strResult:
        print("登录成功")
        return True
    else:
        print("登录失败 - 其他情况")
        return False

if __name__ == ‘__main__‘:
    s = requests.session()
    result = Login(s, "admin", "123456")
    DecideResult(result)

  4 执行结果

1 :  测试用例全部运行pass。

1 :  测试用例有failed。

三: 使用excel
  1 安装xlrd

1 : 运行输入"cmd",进入Dos窗口。

2 : 输入"pip install xlrd"(安装xlrd模块)。

1 : 输入"pip list"(查看安装的库)。

2 : 可以看见已经安装了xlrd(1.1.0)。

  2 准备测试数据

 

1 : 创建excel文件,命名为testData。

2 : 填写测试数据。

四: 禅道登录
  1 工程结构

  2 unittest文件

# coding:utf-8
import unittest
import ddt
import requests
from DataDriver.chandao_login_api import *
from DataDriver.read_excel import ExcelUtil

data = ExcelUtil("testData.xlsx", "Sheet1")
data = data.dict_data()
print(data)

@ddt.ddt
class Test(unittest.TestCase):
    def setUp(self):
        self.session = requests.session()

    def tearDown(self):
        self.session.cookies.clear()    # 清除缓存 - cookies
        self.session.close()            # 去除警告 - 关闭进程

    @ddt.data(*data)    # *data : 分组传送 - 字典类型
    def test_001(self, testData):

        strUser = testData["user"]
        strPass = testData["psw"]
        strResult = Login(self.session, strUser, strPass)
        bResult = DecideResult(strResult)
        self.assertTrue(str(bResult) == testData["expect"])

if __name__ == ‘__main__‘:
    unittest.main()

  3 实现功能文件

# coding:utf-8
import requests

url = "http://127.0.0.1/zentao/user-login.htm"  # url经常变 : 做全局变量 - 做配置文件

def Login(session, strUser, strPass):
    ‘‘‘
    登录禅道
    :param session:     session
    :param strUser:     用户名
    :param strPass:     密码
    :return:            请求结果 - 服务端
    ‘‘‘

    body = {
        "account": strUser,
        "password": strPass,
        "keepLogin[]": "on",
        "referer": "/zentao/my.html"
    }
    r = session.post(url, data = body)
    strResult = r.content.decode("utf-8")
    return strResult

def DecideResult(strResult):
    ‘‘‘
    判断结果 - 登录禅道
    :param strResult:  请求结果 - 服务端
    :return:
    ‘‘‘
    if "登录失败" in strResult:
        print("登录失败")
        return False
    elif "parent.location" in strResult:
        print("登录成功")
        return True
    else:
        print("登录失败 - 其他情况")
        return False

if __name__ == ‘__main__‘:
    s = requests.session()
    result = Login(s, "admin", "123456")
    DecideResult(result)

  4 read_excel.py

# coding:utf-8
import xlrd
class ExcelUtil():
    def __init__(self, excelPath, sheetName="Sheet1"):
        self.data = xlrd.open_workbook(excelPath)
        self.table = self.data.sheet_by_name(sheetName)

        # 获取第一行作为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 range(self.rowNum-1):
                s = {}
                # 从第二行取对应values值
                values = self.table.row_values(j)
                for x in range(self.colNum):
                    s[self.keys[x]] = values[x]
                r.append(s)
                j+=1
            return r

if __name__ == "__main__":
    filepath = "testData.xlsx"
    sheetName = "Sheet1"
    data = ExcelUtil(filepath, sheetName)
    print(data.dict_data())

  5 执行结果

1 :  测试用例全部运行pass。

1 :  测试用例有failed。

原文地址:https://www.cnblogs.com/huafan/p/9906821.html

时间: 2024-11-11 14:00:11

012 python接口 数据驱动ddt的相关文章

python接口自动化--ddt数据驱动

一.安装 pip install ddt 二.数据驱动需在类名上加@ddt.ddt,在测试用例上加@ddt.data(*data) ,data为准备的数据 1 import unittest 2 import ddt 3 4 #测试需要准备的数据 5 data = [ 6 {"user":"admin1","pwd":"111111","expect":"True"}, 7 {"

Python之数据驱动ddt

一.背景 一般进行接口测试时,每个接口的传参都不止一种情况,一般会考虑正向.逆向等多种组合,所以在测试一个接口时,通常会编写多条case,而这些除了传参不同外,并没有什么区别.这个时候就可以利用ddt来管理测试数据,提高代码复用率. 二.ddt安装 ddt是python的第三方库,安装可以进行命令安装,或者通过pycharm界面中settings进行安装. 三.ddt模块组成 1.ddt模块包含类的装饰器ddt和两个方法装饰器data ddt.ddt:装饰类,也就是继承TestCase的类. d

python之数据驱动ddt操作(方法一)

下载ddt并安装 Pip install ddt 或者官网下载安装 http://ddt.readthedocs.io/en/latest/ https://github.com/txels/ddt DDT的使用 DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(可以从json或者yaml中获取测试数据) 只有yaml和yml结尾的文件以yaml形式上传,其他情况下默认为json 通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有

python之数据驱动ddt操作(方法四)

from ddt import ddt,data,unpackfrom selenium import webdriverfrom selenium.webdriver.common.by import Byimport time,unittest """测试类前加修饰@ddt.ddtcase前加修饰@ddt.data() 相同的测试用例@ddt.unpack 分解data的参数""" @ddtclass BaiduSearch(unittest

python之数据驱动ddt操作(方法三)

import unittestfrom selenium import webdriverfrom selenium.webdriver.common.by import Byimport unittest,timefrom parameterized import parameterized #安装 : pip install parameterized #数据驱动模型# ddt excel+ddt yaml+ddt txt+ddt #@unpack 表示用来解压元组到多个参数#应用:ui级别

python之数据驱动ddt操作(方法二)

import unittestfrom ddt import ddt,unpack,datafrom selenium import webdriverfrom selenium.webdriver.common.by import Byimport unittest,time #数据驱动模型# ddt excel+ddt yaml+ddt txt+ddt #@unpack 表示用来解压元组到多个参数#应用:ui级别的自动化测试中可以实现编写一个测试用例实现多个不同的测试点验证#例如在163邮箱

python webdriver 测试框架-数据驱动DDT的例子

先在cmd环境 运行 pip install ddt 安装数据驱动ddt模块  脚本: #encoding=utf-8 from selenium import webdriver import unittest,time import logging,traceback import ddt from selenium.common.exceptions import NoSuchElementException #初始化日志对象 logging.basicConfig( #日志级别 leve

Python接口自动化测试框架实战 从设计到开发

第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的http\https请求包.如何模拟请求数据.过滤规则及修改响应数据.如何解决无法抓包问题        以及fiddler接口测试,让大家能应用好工具! 第3章 Requests常见方法实战运用本章重点讲解 get\post请求测试.接口测试中结果处理.上传\下载文件接口测试.请求中header及coo

Mac OSX (EI Capitan)搭建Caffe环境并配置python接口

Caffe是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的贾扬清.Caffe是纯粹的C++/CUDA架构,支持命令行.Python和MATLAB接口:可以在CPU和GPU直接无缝切换.我在MacbookPro(无NVIDIA显卡)上大费周章地配置了Caffe的环境,并花了许多时间配置其python接口. 一.下载Caffe github上的下载地址:https://github.com/BVLC/caffe进入到下载后的路径,并复制 Makefile.config.ex