'''时间: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
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 执行结果
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
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 执行结果
1 : 测试用例全部运行pass。
1 : 测试用例有failed。