中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

營銷型平臺網(wǎng)站建設(shè)培訓(xùn)方案

營銷型平臺網(wǎng)站建設(shè),培訓(xùn)方案,鋼筋網(wǎng)片多少錢一噸,公司名稱大全20000個1、數(shù)據(jù)驅(qū)動介紹: ddt.ddt(類裝飾器,申明當前類使用ddt框架)ddt.data(函數(shù)裝飾器,用于給測試用例傳遞數(shù)據(jù)),支持傳python所有數(shù)據(jù)類型:數(shù)字(int,…

1、數(shù)據(jù)驅(qū)動介紹:

  • @ddt.ddt(類裝飾器,申明當前類使用ddt框架)
  • @ddt.data(函數(shù)裝飾器,用于給測試用例傳遞數(shù)據(jù)),支持傳python所有數(shù)據(jù)類型:數(shù)字(int,long,float,compix),字符串,列表1ist,元組tuple,集合,編寫閱讀數(shù)據(jù)文件的函數(shù)、@data入口參數(shù)加*讀取
  • @ddt.unpack(函致裝飾器,將傳輸?shù)臄?shù)據(jù)包解包),一般作用于元組tuple和列表list、字典(參數(shù)名字和個數(shù)需要與字典的鍵保持一致)(數(shù)組、字符串不需要)
  • @ddt.file_data(函數(shù)裝飾器,可直接讀取yaml/json文件)

2、數(shù)據(jù)驅(qū)動和關(guān)鍵驅(qū)動的區(qū)別:

  • Data-Driven Tests(DDT)即數(shù)據(jù)驅(qū)動測試,可以實現(xiàn)不同數(shù)據(jù)運行同一個測試用例。ddt本質(zhì)其實就是裝飾器,一組數(shù)據(jù)一個場景。
  • 關(guān)鍵字驅(qū)動(核心:把業(yè)務(wù)邏相封裝成關(guān)鍵字login,只需要調(diào)用login。)

3、混合驅(qū)動模式(關(guān)鍵字驅(qū)動+數(shù)據(jù)驅(qū)動)

4、在進行數(shù)據(jù)驅(qū)動測試實戰(zhàn):需要在測試類上使用@ddt.ddt裝飾器,在測試用例上使用@ddt.data裝飾器。

(1)單一參數(shù):導(dǎo)包——寫一個參數(shù)(列表、數(shù)字、字符串)-----設(shè)置@ddt.data裝飾器寫入?yún)?shù)名----方法中寫入形參*data----調(diào)用參數(shù)內(nèi)容

(2)多參數(shù)的數(shù)據(jù)驅(qū)動測試(一個測試參數(shù)中含多個元素):導(dǎo)包——設(shè)置@ddt裝飾器——設(shè)置@unpack解包——寫入?yún)?shù)——形參傳遞——調(diào)用

(3)txt文件傳參

(4)json文件傳參

(5)yaml文件傳參

(6)xlsx文件傳參

注意:Python中傳遞可變參數(shù):*代表順序閱讀列表類型,**代表順序閱讀對象(字典)類型,點擊閱讀可變參數(shù)部分可了解相關(guān)機制

# 1、單一參數(shù)的數(shù)據(jù)驅(qū)動# 前置步驟:
# 使用語句import unittest導(dǎo)入測試框架
# 使用語句from ddt import ddt, data導(dǎo)入單一參數(shù)的數(shù)據(jù)驅(qū)動需要的包# 示例會執(zhí)行三次test,參數(shù)分別為'666','777','888'
import ddt
import unittest
@ddt.ddt  # 設(shè)置@ddt裝飾器
class BasicTestCase(unittest.TestCase):@ddt.data('666', '777', '888')  # 設(shè)置@data裝飾器,并將傳入?yún)?shù)寫進括號def test(self, *data):  # test入口設(shè)置形參print('數(shù)據(jù)驅(qū)動的number:', data)
# 程序會執(zhí)行三次測試,入口參數(shù)分別為666、777、888# 2、多參數(shù)的數(shù)據(jù)驅(qū)動
# 在單一參數(shù)包的基礎(chǔ)上,額外導(dǎo)入一個unpack的包,from ddt import ddt, data, unpack
# 步驟:導(dǎo)包——設(shè)置@ddt裝飾器——設(shè)置@unpack解包——寫入?yún)?shù)——形參傳遞——調(diào)用
import ddt
import unittestTestdata = [{"username": "admin", "password": "123456", "excepted": {'code': '200', 'msg': '登錄成功'}},{"username": None, "password": "1234567", "excepted": {'code': '400', 'msg': '用戶名或密碼不能為空'}},{"username": "admin", "password": None, "excepted": {'code': '400', 'msg': '用戶名或密碼不能為空'}},{"username": "admin", "password": "123456789", "excepted": {'code': '404', 'msg': '用戶名或密碼錯誤'}},
]@ddt.ddt
class BasicTestCase(unittest.TestCase):#方式一:直接將列表放到data@ddt.data(['張三', '18'], ['李四', '19'])  # 設(shè)置@data裝飾器,并將同一組參數(shù)寫進中括號[]@ddt.unpack  # 設(shè)置@unpack裝飾器順序解包,缺少解包則相當于name = ['張三', '18']def test(self, name, age):print('姓名:', name, '年齡:', age)
# 程序會執(zhí)行兩次測試,入口參數(shù)分別為['張三', '18'],['李四', '19']#方式二:寫一個列表后,使用*訪問列表到data@ddt.data(*Testdata)@ddt.unpack # 設(shè)置@unpack裝飾器順序解包def test_DataDriver(self, *Data):#print('DDT數(shù)據(jù)驅(qū)動實戰(zhàn)演示:', Data)res = login.login_check(Testdata['username'], Testdata['password'])self.assertEqual(res, Testdata['excepted'])#3、 txt文件接收參數(shù)
# 新建num文件,txt格式# (1)單一參數(shù)按行存儲777,888,999# (2)多參數(shù)txt文件# dict文件內(nèi)容(參數(shù)列表)(按行存儲):# 張三,18# 李四,19
# 編輯閱讀數(shù)據(jù)文件的函數(shù)
# 記住讀取文件一定要設(shè)置編碼方式,否則讀取的漢字可能出現(xiàn)亂碼!!!!!!
import ddt
import unittest
def read_num():lis = []    # 以列表形式存儲數(shù)據(jù),以便傳入@data區(qū)域with open('num.txt', 'r', encoding='utf-8') as file:    # 以只讀'r',編碼方式為'utf-8'的方式,打開文件'num',并命名為filefor line in file.readlines():   # 循環(huán)按行讀取文件的每一行l(wèi)is.append(line.strip('\n'))  #單一參數(shù),每讀完一行將此行數(shù)據(jù)加入列表元素,記得元素要刪除'/n'換行符!!!#lis.append(line.strip('\n').split(','))  # 多參驅(qū)動,刪除換行符,根據(jù),分割后,列表為['張三,18', '李四,19', '王五,20']return lis    # 將列表返回,作為@data接收的內(nèi)容
@ddt.ddt
class BasicTestCase(unittest.TestCase):@ddt.data(*read_num())  # 入口參數(shù)設(shè)定為read_num(),因為返回值是列表,所以加*表示逐個讀取列表元素#txt表格有多少個值,設(shè)置多少個接收參數(shù)的形參def test(self, name,age):print('數(shù)據(jù)驅(qū)動的number:', name,age)# 4、JSON文件傳參:數(shù)據(jù)分離
# 多參數(shù)——json文件
# 步驟和單一參數(shù)類似,僅需加入@unpack裝飾器以及多參數(shù)傳參入口
# dict文件內(nèi)容(參數(shù)列表)(非規(guī)范json文件格式):
# 單一參數(shù):["666","777","888"]
# 多個參數(shù):[["張三", "18"], ["李四", "19"], ["王五", "20"]]
# 注意json文件格式字符串用雙引號
import ddt
import unittest
import json
def read_dict_json():return json.load(open('dict.json', 'r', encoding='utf-8'))  # 使用json包讀取json文件,并作為返回值返回
@ddt.ddt
class BasicTestCase(unittest.TestCase):@ddt.data(*read_dict_json())@ddt.unpack     # 使用@unpack裝飾器解包def test(self, name, age):    # 因為是非規(guī)范json格式,所以形參名無限制,下文會解釋規(guī)范json格式print('姓名:', name, '年齡:', age)# 4、JSON文件傳參:數(shù)據(jù)分離
# json文件三種形式:
# (1)單一參數(shù):["666","777","888"]
# (2)多個參數(shù):[["張三", "18"], ["李四", "19"], ["王五", "20"]]
# (3)JSON格式讀取,每一組參數(shù)以對象形式存儲:
# [
#   {"name":"張三", "age":"18"},
#   {"name":"李四", "age":"19"},
#   {"name":"王五", "age":"20"}
# ]
# 單一參數(shù)時無需使用unpack,多參數(shù)需要使用unpack解包,注意json文件格式字符串用雙引號
import ddt
import unittest
import json#方式1:非正式j(luò)son格式使用
def read_dict_json():return json.load(open('dict.json', 'r', encoding='utf-8'))  # 使用json包讀取json文件,并作為返回值返回#方式2:JSON格式讀取,提取已讀完后的json文件(字典形式),通過遍歷獲取元素,并返回
def read_dict_json():lis = []dic = json.load(open('dict.json', 'r', encoding='utf-8'))# 此處加上遍歷獲取語句,下文yaml格式有實例,方法一樣for item in dic:lis.append(item)return lis@ddt.ddt
class BasicTestCase(unittest.TestCase):@ddt.data(*read_dict_json())@ddt.unpack     # 使用@unpack裝飾器解包def test(self, name, age):    # 因為是非規(guī)范json格式,所以形參名無限制,下文會解釋規(guī)范json格式print('姓名:', name, '年齡:', age)#5、多參數(shù)yaml
# 以對象形式存儲yml數(shù)據(jù)(字典)
# yaml格式文件內(nèi)容
# -
#   name: 張三
#   age: 18
# -
#   name: 李四
#   age: 19
# -
#   name: 王五
#   age: 20
# '-'號之后一定要打空格!!!
# ':'號之后一定要打空格!!!# 入口參數(shù)與數(shù)據(jù)參數(shù)key命名統(tǒng)一即可導(dǎo)入
import ddt
import unittest
import yaml
@ddt.ddt
class BasicTestCase(unittest.TestCase):#方式1:形參入口和數(shù)據(jù)參數(shù)key命名統(tǒng)一@ddt.file_data('./data/dict.yml')def test(self, name, age):  # 設(shè)置入口參數(shù)名字與數(shù)據(jù)參數(shù)命名相同即可print('姓名是:', name, '年齡為:', age)#方式2:入口參數(shù)與數(shù)據(jù)參數(shù)命名不統(tǒng)一@ddt.file_data('./data/dict.yml')def test(self, **cdata):  # Python中可變參數(shù)傳遞的知識:**按對象順序執(zhí)行print('姓名是:', cdata['name'], '年齡為:', cdata['age'])    # 通過對象訪問語法即可調(diào)用

例子如下:

方式一:測試數(shù)據(jù)直接寫成列表形式,使用ddt.data(*Data)傳值

##2.12.2  DDT在自動化測試中的應(yīng)用(傳列表)import ddt
import unittest# 給4條測試數(shù)據(jù)Testdata = [{"username": "admin", "password": "123456", "excepted": {'code': '200', 'msg': '登錄成功'}},{"username": None, "password": "1234567", "excepted": {'code': '400', 'msg': '用戶名或密碼不能為空'}},{"username": "admin", "password": None, "excepted": {'code': '400', 'msg': '用戶名或密碼不能為空'}},{"username": "admin", "password": "123456789", "excepted": {'code': '404', 'msg': '用戶名或密碼錯誤'}},]
@ddt.ddt
class TestModules(unittest.TestCase):def setUp(self):print('testcase beaning....')def tearDown(self):print('testcase ending.....')@ddt.data(*Data)def test_DataDriver(self,Data):#print('DDT數(shù)據(jù)驅(qū)動實戰(zhàn)演示:',Testdata)res = login.login_check(Testdata['username'], Testdata['password'])self.assertEqual(res, Testdata['excepted'])
if __name__ == '__main__':unittest.main()

方式二:數(shù)據(jù)寫到方法形式readData(),使用ddt.data(*readData())傳值

import ddt
import unittest# 給4條測試數(shù)據(jù)
def readData():Testdata = [{"username": "admin", "password": "123456", "excepted": {'code': '200', 'msg': '登錄成功'}},{"username": None, "password": "1234567", "excepted": {'code': '400', 'msg': '用戶名或密碼不能為空'}},{"username": "admin", "password": None, "excepted": {'code': '400', 'msg': '用戶名或密碼不能為空'}},{"username": "admin", "password": "123456789", "excepted": {'code': '404', 'msg': '用戶名或密碼錯誤'}},]return TestData@ddt.ddt
class TestModules(unittest.TestCase):def setUp(self):print('testcase beaning....')def tearDown(self):print('testcase ending.....')@ddt.data(*readData())def test_DataDriver(self,Data):#print('DDT數(shù)據(jù)驅(qū)動實戰(zhàn)演示:',Testdata)res = login.login_check(Testdata['username'], Testdata['password'])self.assertEqual(res, Testdata['excepted'])
if __name__ == '__main__':unittest.main()

http://www.risenshineclean.com/news/7878.html

相關(guān)文章:

  • 門戶網(wǎng)站如何推廣互聯(lián)網(wǎng)推廣是干什么的
  • 營銷網(wǎng)站建設(shè)規(guī)劃淘寶指數(shù)查詢
  • 廊坊百度網(wǎng)站排名大數(shù)據(jù)精準營銷的策略
  • 重慶網(wǎng)站建設(shè)仿站資源網(wǎng)
  • 優(yōu)惠券網(wǎng)站要怎么做的網(wǎng)絡(luò)廣告宣傳平臺
  • 廣州網(wǎng)站建設(shè)58培訓(xùn)課程網(wǎng)站
  • 動態(tài)網(wǎng)站建設(shè)實訓(xùn)內(nèi)容太原網(wǎng)絡(luò)營銷公司
  • 水果行業(yè)為什么做網(wǎng)站重慶網(wǎng)站關(guān)鍵詞排名優(yōu)化
  • 今日國內(nèi)新聞簡訊seo云優(yōu)化
  • 網(wǎng)站的策劃分析溫州seo招聘
  • cms網(wǎng)站建設(shè)有多少條數(shù)據(jù)正規(guī)的代運營公司
  • 行業(yè)門戶網(wǎng)站建設(shè)方案書網(wǎng)絡(luò)營銷推廣8種方法
  • 3d建站app開發(fā)平臺
  • 柳州網(wǎng)站建設(shè)工作室營銷方式和手段有哪些
  • 網(wǎng)站建設(shè)推進會講話稿網(wǎng)址搜索ip地址
  • 網(wǎng)站怎么做優(yōu)化步驟重慶網(wǎng)站seo好不好
  • 做地方門戶網(wǎng)站百度seo最新算法
  • 開發(fā)一個網(wǎng)站做爬蟲西安百度競價托管公司
  • 做一家網(wǎng)站費用平臺優(yōu)化
  • wordpress做個游戲旺道seo營銷軟件
  • cms網(wǎng)站建設(shè)方案seo教程培訓(xùn)班
  • 知名排版網(wǎng)站seo推廣軟
  • 百度網(wǎng)站的設(shè)計風(fēng)格上海外貿(mào)seo
  • 炫酷個人網(wǎng)站鎮(zhèn)江網(wǎng)站建設(shè)
  • 展示型建站模板平臺東莞網(wǎng)站推廣的公司
  • 專業(yè)的網(wǎng)站開發(fā)服務(wù)軟文有哪些發(fā)布平臺
  • 教育網(wǎng)站報名友妙招鏈接怎么弄
  • 政府網(wǎng)站建設(shè)人員組成上海優(yōu)化公司選哪個
  • 泉州自助建站seo怎么優(yōu)化效果更好
  • 沒備案的網(wǎng)站可以做淘客優(yōu)化大師班級