unittest是目前應用都相對較高的測試框架之一,主要用於管理測試用例,最初是應用於單元測試,現在可以進行ui、介面自動化測試。它是python內建的乙個測試框架。unittest包含四大元件
1.匯入環境
import unittest
2.unittest有基本語法規則
a.繼承自unittest.testcase
b.建立用例必須以test_開頭
c.unittest中的執行順序是既定的,a-z a-z 0-9
d.前置和後置在框架中對每乙個測試用例都執行一次
)2.1 單資料傳遞
from ddt import ddt,data
@ddt
class
demo
(unittest.testcase)
:#前置條件
defsetup
(self)
->
none
: self.driver = webdriver.chrome(
)def
teardown
(self)
->
none
: sleep(3)
self.driver.quit(
)#必須以test_開頭
@data(
'selenium'
,'unittest'
)def
test_a1
(self,text)
:# driver = webdriver.chrome()
self.driver.get(
'') self.driver.find_element_by_id(
'kw'
).send_keys(text)
self.driver.find_element_by_id(
'su'
).click(
)
2.2 多資料傳遞
from ddt import ddt,data,unpack
@ddt
class
demo
(unittest.testcase)
:#前置條件
defsetup
(self)
->
none
: self.driver = webdriver.chrome(
)def
teardown
(self)
->
none
: sleep(3)
self.driver.quit(
)#必須以test_開頭
@data(
['','selenium'],
['','unittest'])
@unpack
deftest_a1
(self,url,text)
:# driver = webdriver.chrome()
self.driver.get(url)
self.driver.find_element_by_id(
'kw'
).send_keys(text)
self.driver.find_element_by_id(
'su'
).click(
)
2.3 yaml檔案實現資料驅動
首先新建乙個yaml檔案,注意每組資料要以-作為開始
yaml檔案的讀取
@ddt
class
demo
(unittest.testcase)
:#前置條件
defsetup
(self)
->
none
: self.driver = webdriver.chrome(
)def
teardown
(self)
->
none
: sleep(3)
self.driver.quit(
)#必須以test_開頭
# @data(*read_file())
# @unpack
@file_data(
'test.yaml'
)def
test_a1
(self,
**user)
: url =
''self.driver.get(url)
self.driver.find_element_by_xpath(
'/html/body/div[4]/div/div[2]/div[2]/form/div[1]/input'
).send_keys(user.get(
'name'))
self.driver.find_element_by_xpath(
'/html/body/div[4]/div/div[2]/div[2]/form/div[2]/input'
).send_keys(user.get(
'pwd'))
self.driver.find_element_by_xpath(
'/html/body/div[4]/div/div[2]/div[2]/form/div[3]/button'
).click(
)
自動化測試主要用於對流程來進行測試,斷言就是自動化測試中的預期結果與實際結果的對比。
self.assertequal(name,
'zhangsan'
,msg=
'姓名錯誤'
)#判斷name是否等於zhangsan,不等於的話報錯資訊為msg
skip跳過用例
1.無條件跳過用例
@unittest.skip(
'跳過'
)def
test_4
(self)
:print
('test_4'
)
2.有條件跳過skipunless
@unittest.skipunless(
0>1,
'有條件跳過'
)def
test_5
(self)
:print
('test_5'
)
3.有條件跳過skipif
@unittest.skipif(
2>1,
'跳過'
)def
test_6
(self)
:print
('test_6'
)
4.expectfailure
在self.expectedfailre遇到錯誤時程式會報錯,如果加上@unittest.expectedfailre程式不會報錯,unittest框架不記錄程式出錯。
@unittest.expectedfailure
deftest_7
(self)
:print
('test_7'
) self.assertequal(2,
3,msg=
'not equal'
)
python測試框架unittest(1)
需要測試的 如下 def add city country city,country city and country city country return city and country.title 先寫乙個簡單的測試類 import unittest from city country im...
關於unittest測試框架的使用
一直用的是pytest,公司介面自動化用的是unittest,孰勝孰劣不好分析,但是都要學習,適應環境才能得到提高。testcase是測試用例類,所有執行用例的類都要繼承unittest.testcase類 class test unittest.testcase 每乙個繼承unittest.tes...
python單元測試unittest框架
環境 pycharm 2016.2 python 3.5 待測試的類 widget.py 測試類 auto.py 測試結果 總結 1。第一步 先寫好測試類 2。第二步 匯入unittest模組及測試的類,運用setup 方法做測試前的準備工作,如建立資料庫連線,運用teardown 方法做測試後的清...