热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python接口数据驱动_013python接口数据驱动ddt

时间:20181105目录:一:安装ddt二:禅道登录1工程结构2unittest文件3实现功能文件4执行结果三:使用excel1安装xlrd2准

736016-20181105003637781-1781839015.jpg

'''时间:2018/11/05

目录:

一: 安装ddt

二: 禅道登录

1 工程结构

2 unittest文件

3 实现功能文件

4 执行结果

三: 使用excel

1 安装xlrd

2 准备测试数据

四: 禅道登录

1 工程结构

2 unittest文件

3 实现功能文件

4 read_excel.py

5 执行结果'''

一: 安装ddt

736016-20181105003834678-429421109.png

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

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

736016-20181105004045619-1516244453.png

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

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

736016-20181105004112760-1222533069.png

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

二: 禅道登录

1 工程结构

736016-20181105004525720-23201289.png

2 unittest文件

#coding:utf-8

importunittestimportddtimportrequestsfrom 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.ddtclassTest(unittest.TestCase):defsetUp(self):

self.session=requests.session()deftearDown(self):

self.session.COOKIEs.clear()#清除缓存 - COOKIEs

self.session.close() #去除警告 - 关闭进程

@ddt.data(*data) #*data : 分组传送 - 字典类型

deftest_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

importrequests

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

defLogin(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")returnstrResultdefDecideResult(strResult):'''判断结果 - 登录禅道

:param strResult: 请求结果 - 服务端

:return: True - 登录成功

Fasle - 登录失败'''

if "登录失败" instrResult:print("登录失败")returnFalseelif "parent.location" instrResult:print("登录成功")returnTrueelse:print("登录失败 - 其他情况")returnFalseif __name__ == '__main__':

s=requests.session()

result= Login(s, "admin", "123456")

DecideResult(result)

4 执行结果

736016-20181105004802767-1285573305.png

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

736016-20181105004904124-1597597698.png

1 : 测试用例有failed。

三: 使用excel

1 安装xlrd

736016-20181105004922203-369114401.png

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

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

736016-20181105004949646-507958746.png

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

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

2 准备测试数据

736016-20181105005112930-313726248.png

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

2 : 填写测试数据。

四: 禅道登录

1 工程结构

736016-20181105005348927-336441282.png

2 unittest文件

#coding:utf-8

importunittestimportddtimportrequestsfrom DataDriver.chandao_login_api import *

from DataDriver.read_excel importExcelUtil

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

data=data.dict_data()print(data)

@ddt.ddtclassTest(unittest.TestCase):defsetUp(self):

self.session=requests.session()deftearDown(self):

self.session.COOKIEs.clear()#清除缓存 - COOKIEs

self.session.close() #去除警告 - 关闭进程

@ddt.data(*data) #*data : 分组传送 - 字典类型

deftest_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

importrequests

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

defLogin(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")returnstrResultdefDecideResult(strResult):'''判断结果 - 登录禅道

:param strResult: 请求结果 - 服务端

:return:'''

if "登录失败" instrResult:print("登录失败")returnFalseelif "parent.location" instrResult:print("登录成功")returnTrueelse:print("登录失败 - 其他情况")returnFalseif __name__ == '__main__':

s=requests.session()

result= Login(s, "admin", "123456")

DecideResult(result)

4 read_excel.py

#coding:utf-8

importxlrdclassExcelUtil():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 &#61;self.table.ncolsdefdict_data(self):if self.rowNum <&#61; 1:print("总行数小于1")else:

r&#61;[]

j&#61;1

for i in range(self.rowNum-1):

s&#61;{}#从第二行取对应values值

values &#61;self.table.row_values(j)for x inrange(self.colNum):

s[self.keys[x]]&#61;values[x]

r.append(s)

j&#43;&#61;1

returnrif __name__ &#61;&#61; "__main__":

filepath&#61; "testData.xlsx"sheetName&#61; "Sheet1"data&#61;ExcelUtil(filepath, sheetName)print(data.dict_data())

5 执行结果

736016-20181105005640818-1109092408.png

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

736016-20181105005748837-870336441.png

1 : 测试用例有failed。



推荐阅读
  • 利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Exce ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 本教程详细介绍了如何使用 Spring Boot 创建一个简单的 Hello World 应用程序。适合初学者快速上手。 ... [详细]
  • 本文全面解析了 Python 中字符串处理的常用操作与技巧。首先介绍了如何通过 `s.strip()`, `s.lstrip()` 和 `s.rstrip()` 方法去除字符串中的空格和特殊符号。接着,详细讲解了字符串复制的方法,包括使用 `sStr1 = sStr2` 进行简单的赋值复制。此外,还探讨了字符串连接、分割、替换等高级操作,并提供了丰富的示例代码,帮助读者深入理解和掌握这些实用技巧。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • 探讨Redis的最佳应用场景
    本文将深入探讨Redis在不同场景下的最佳应用,包括其优势和适用范围。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • Python 3 Scrapy 框架执行流程详解
    本文详细介绍了如何在 Python 3 环境下安装和使用 Scrapy 框架,包括常用命令和执行流程。Scrapy 是一个强大的 Web 抓取框架,适用于数据挖掘、监控和自动化测试等多种场景。 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • Hyperledger Fabric 1.4 节点 SDK 快速入门指南
    本文将详细介绍如何利用 Hyperledger Fabric 1.4 的 Node.js SDK 开发应用程序。通过最新版本的 Fabric Node.js SDK,开发者可以更高效地构建和部署基于区块链的应用,实现数据的安全共享和交易处理。文章将涵盖环境配置、SDK 安装、示例代码以及常见问题的解决方法,帮助读者快速上手并掌握核心功能。 ... [详细]
author-avatar
政平世财482
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有