自動化測試之 ddt 驅動 excel 檔案

2021-10-19 07:16:49 字數 4434 閱讀 7222

一、ddt 用途

二、安裝 ddt

三、ddt 模組組成

四、示例

from ddt import ddt, data

import unittest

@ddt

class mytestddt(unittest.testcase):

def setup(self):

print('start')

@data(2, 4) # 使用 data 傳引數給測試用例

def test_one(self,value):

print('the @data number is {}'.format(value))

def teardown(self):

print('end')

if __name__ == '__main__':

unittest.main()

# 結果如下:

start

the @data number is :2

endstart

the @data number is :4

end

from ddt import ddt, data, unpack

import unittest

@ddt

class mytestddt(unittest.testcase):

def setup(self):

print('start')

@data((1, 2), (4, 5)) # 元組

@unpack # 二次分解元組

def test_one(self, value1, value2):

print('the @data number is {} and {}'.format(value1, value2))

def teardown(self):

print('end')

if __name__ == '__main__':

unittest.main()

# 結果如下

start

the @data number is 1 and 2

endstart

the @data number is 4 and 5

end

from ddt import ddt, data, unpack

import unittest

@ddt

class mytestddt(unittest.testcase):

def setup(self):

print('start')

@data(, ) # 字典

@unpack

def test_one(self, value1, value2):

print('the @data number is {} and {}'.format(value1, value2))

def teardown(self):

print('end')

if __name__ == '__main__':

unittest.main()

# 結果如下

start

the @data number is 1 and 2

endstart

the @data number is 3 and 4

end

from ddt import ddt, data, unpack

import unittest

@ddt

class mytestddt(unittest.testcase):

def setup(self):

print('start')

@data(*[, ]) # 這裡加 * 後會將返回資料分為乙個個的字典

@unpack

def test_one(self, **value):

print('the @data number is {} and {}'.format(value.get("value1"), value.get("value2")))

def teardown(self):

print('end')

if __name__ == '__main__':

unittest.main()

# 結果如下

start

the @data number is 1 and 2

endstart

the @data number is 3 and 4

end

五、cms 登入例項

gettestdata.py 封裝讀取 excel 檔案內容且返回 [['evan', '123456'], ['duoceshi007', '123456'], ['evan', '******']] 格式資料的方法

"""import xlrd

def getdata():

book = xlrd.open_workbook("data.xls")

sheet = book.sheet_by_name("sheet1")

rows = sheet.nrows

data_list =

for t in range(rows-1):

row_list =

row_data = sheet.row_values(t + 1)

for i in row_data:

if isinstance(i, float):

d = int(i)

else:

return data_list

"""

lesson3_5_1.py cms 登入測試用例

"""from selenium import webdriver

import time

import unittest

from ddt import ddt, data, unpack

from python_selenium.lesson3_2020_11_2.lesson3_5_ddt.gettestdata import getdata

@ddt

class cmslogin(unittest.testcase):

def setup(self) -> none:

self.dr = webdriver.chrome()

self.dr.get("")

self.dr.maximize_window()

self.dr.implicitly_wait(10)

def teardown(self) -> none:

time.sleep(2)

self.dr.quit()

@data(*getdata())

@unpack

def test_login(self, username, password):

self.dr.find_element_by_id("useraccount").send_keys(username)

self.dr.find_element_by_id("loginpwd").send_keys(password)

self.dr.find_element_by_id("loginbtn").click()

time.sleep(2)

if username == "evan" and password == "123456":

try:

nickname = self.dr.find_element_by_class_name("c-white").text

except:

raise assertionerror("登入失敗!")

else:

assert username in nickname

else:

logintext = self.dr.find_element_by_css_selector('[for="online"]').text

assert "使我保持登入狀態" in logintext

if __name__ == '__main__':

unittest.main()

自動化測試之 ddt 驅動 json 檔案

一 上篇文章我們使用了 unittest ddt 驅動 excel 檔案做資料驅動測試,本篇文章我們採用 unittest ddt 驅動 json 檔案來實現資料驅動測試,話不多說上原始碼。執行結果如下 執行結果如下 ran 3 tests in 0.004s evan 123456 lvan 12...

python介面自動化 DDT資料驅動測試

如果想從頭學起介面自動化測試,可以去看看這個系列的文章哦!ddt date driver test 所謂資料驅動測試,簡單來說就是由資料的改變從而驅動自動化測試的執行,最終引起測試結果的改變。通過使用資料驅動測試的方法,可以在需要驗證多組資料測試場景中,使用外部資料來源實現對輸入輸出與期望值的引數化...

自動化測試ddt的使用

資料驅動測試 允許您通過使用不同的測試資料執行乙個測試用例,並使其顯示為多個測試用例。1.ddt 類裝飾器,用於testcase的子類test方法。2.1 data 方法裝飾器 資料 包含與要提供給測試的值一樣多的引數。2.2 file data 方法裝飾器 資料 將從json或yaml檔案載入測試...