013 python接口 数据驱动ddt

匿名 (未验证) 提交于 2019-12-02 22:11:45

''' 时间: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模块)。

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


二: 禅道登录
  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 执行结果


三: 使用excel
  1 安装xlrd

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

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

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


  2 准备测试数据

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

四: 禅道登录
  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 执行结果

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!