# 1.導包
import pytest
# 2.編寫測試方法
deffun
(x):
return x+
1# 執行測試用例
deftest_a()
:print
("---test a---"
)assert fun(3)
==4# 斷言 (成功)
deftest_b()
:print
("--test b---"
)assert fun(3)
==5# 斷言 (失敗)
# 執行
if __name__ ==
'__main__'
: pytest.main(
["-s"
,"pytest_01.py"])
# "-s" :顯示**中print的列印,
命令列執行
pytest -s pytest_01.py
類級別 : set_class/teardown_class
import pytest
# 類之外
# 1. 編寫測試用例test
deftest_a()
:print
("---test a---"
)def
test_b()
:print
("---test b---"
)# 2. 測試用例之前要執行setup()
defsetup()
:print
("---setup---"
)# 3. 測試用例之後要執行teardown()
defteardown()
:print
("---teardown---"
)if __name__ ==
'__main__'
: pytest.main(
['-s'
,'test_method.py'])
# 結果
test_method.py -
--setup---
---test a---
.---teardown---
---setup---
---test b---
.---teardown---
----
----
----
----
----
----
----
----
----
----
----
----
--import pytest
# 類之內
class
testmethod
:def
test_a
(self)
:print
("---test a---"
)def
test_b
(self)
:print
("---test b---"
)# 2. 測試用例之前要執行setup()
defsetup
(self)
:print
("---setup---"
)# 3. 測試用例之後要執行teardown()
defteardown
(self)
:print
("---teardown---"
)def
setup_class
(self)
:print
("---setup_class"
)def
teardown_class
(self)
:print
("---teardown_class"
)if __name__ ==
'__main__'
: pytest.main(
['-s'
,'test_method.py'])
----
----
----
----
----
----
----
----
----
----
--# 結果
test_method.py -
--setup_class--
-setup---
---test a---
.---teardown---
---setup---
---test b---
.---teardown---
---teardown_class
測試檔案以test_*.py
開頭或*_test.py
結尾
測試類以test
開頭,且不能帶有__init__
方法
測試函式以test_
開頭
命令列下,執行**pytest -v
會執行當前目錄下所有符合規則的檔案
檔名pytest.ini
建立在當前目錄下,值對當前目錄下的所有檔案及子目錄起作用
[pytest]
addopts = -s # -v 不列印print
# 當前目錄下的script資料夾 - 可自定義
testpaths = testcase
# 當前目錄下的script資料夾下,以test_開頭,以.py結尾的所有檔案 - 可自定義
python_files = test_*.py
# 當前目錄下的script資料夾下,以test_開頭,以.py結尾的所有檔案中,以test_開頭的類 - 可自定義
python_classes = test_*
# 當前目錄下的script資料夾下,以test_開頭,以.py結尾的所有檔案中,以test_開頭的類內,以test_開頭的方法
python_funcitions = test_*
pytest提供了標記機制,允許使用mark對測試函式做標記
@pytest.mark.標記名
deftest_a
(self)
:pass
1. 乙個測試函式可以有多核標記
2. 乙個mark可以標記多個測試函式
3. 執行引數pytest -m 標記名
4. 執行多個引數 pytest -m "標記名1 or 標記名2"
5. 不執行某個被標記的函式 pytest -m "not 標記名"
跳過測試
skip
skipif
import pytest
# 類之內
class
test_method
:# @pytest.mark.skip
# @pytest.mark.skip(reason="不執行這個")
@pytest.mark.skipif(
2<
1,reason=
"如果2小於1就不執行"
)def
test_a
(self)
:print
("---test a---"
)def
test_b
(self)
:print
("---test b---"
)if __name__ ==
'__main__'
: pytest.main(
['-s'
,'test_method.py'])
# 也可以放在類的上邊,那樣類裡面所有的測試用例都不會執行
@pytest.mark.parametrize(argnames,ar**alues)
import pytest
# 類之內
class
test_method
: @pytest.mark.parametrize(
"name",[
"小明"
,"小紅"
,"小強"])
deftest_a
(self,name)
:print
("---test a---"
)print
(name)
deftest_b
(self)
:print
("---test b---"
)if __name__ ==
'__main__'
: pytest.main(
['-s'
,'test_method.py'
])
@pytest.mark.parametrize(("username","password"),[("xiaoming","123"),("xiaoqiang","456")])
php CI框架入門
顯示2.控制器認識 controller是框架控制器資料夾 我們來寫一下自己的控制器,控制器檔名要和類名一直,類名首字母大寫 test.php檔案 defined basepath or exit no direct script access allowed class test extends ...
SSH框架入門
目前最新版本是spring framework 2.5.6 with dependencies.zip,該包不僅包含spring的開發包,而且包含spring編譯和執行所依賴的第三方類庫 aspectj 該路徑下包含了spring支援aspectj所需類的源 也包含了相關測試用例檔案 dist 該資...
Tigo框架入門
給大家介紹乙個go語言的web framework,tigo框架。tigo框架的設計風格有點類似於tornado,從python轉go的小夥伴可以看看。首先,安裝 go get github.com karldoenitz tigo 安裝結束後來編寫乙個簡單地hello world,如下 url路由...