Pytest框架入門

2021-10-06 12:30:02 字數 4577 閱讀 8887

# 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路由...