創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
創(chuàng)新互聯(lián)公司-成都網(wǎng)站建設(shè)公司,專注成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)站營銷推廣,空間域名,網(wǎng)頁空間,網(wǎng)站托管、服務(wù)器托管有關(guān)企業(yè)網(wǎng)站制作方案、改版、費(fèi)用等問題,請聯(lián)系創(chuàng)新互聯(lián)公司。Pytest如何快速入門?針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
1、安裝
(1)全局安裝
使用pip 進(jìn)行安裝
pip install -U pytest
檢查安裝版本
$ pip install -U pytest
This is pytest version 4.4.0, imported from xxxx
(2)項(xiàng)目目錄下安裝
如果只是將pytest安裝到當(dāng)前項(xiàng)目中,不與其它的版本混淆,使用 virtualenv進(jìn)行安裝
mkdir pytest_project
cd pytest_project
virtualenv .venv
這將會在項(xiàng)目目錄下創(chuàng)建pytest-env目錄存放虛擬環(huán)境。
激活虛擬環(huán)境
source .venv/bin/activate
再次使用pip進(jìn)行安裝,安裝文件將存放在當(dāng)前項(xiàng)目目錄下,而不再是全局環(huán)境變量下
$ pip install pytest
(3)區(qū)別
全局安裝方式適合所有項(xiàng)目,在項(xiàng)目目錄下虛擬化安裝只適合當(dāng)前項(xiàng)目。
2、基本操作
(1)主要內(nèi)容
基本使用方式:我們將從一個(gè)簡單的測試開始,Pytest命名規(guī)范文件名以test_開頭或以_test.py結(jié)尾。首先創(chuàng)建一個(gè)名為test_capitalize.py的文件,在此文件中編寫一個(gè)名為capital_case的函數(shù),以字符串作為參數(shù),將參數(shù)轉(zhuǎn)化為大寫返回。另外編寫一個(gè)test_capital_case參數(shù)函數(shù),主要驗(yàn)證capital_case函數(shù)完成它所說的內(nèi)容,我們用test_作為測試函數(shù)名稱的前綴。
# test_capitalize.py
def capital_case(x):
return x.capitalize()
def test_capital_case():
assert capital_case('semaphore') == 'Semaphore'
在命令行運(yùn)行 pytest , 將自動執(zhí)行 test_capitalize.py 文件中的 test_capital_case 測試方法;
collected 1 item
test_capitalize.py . [100%]
========================================= 1 passed in 0.01 seconds ==========================================
測試用例執(zhí)行通過。
3、Pytest 運(yùn)行時(shí)設(shè)置
(1)xunit 格式
函數(shù)級別設(shè)置運(yùn)行時(shí)
setup_module
setup
teardown
teardown_module
如下代碼
def setup_module():
print("module --setup-- ")
def teardown_module():
print('module --teardown--')
def setup():
print("function --setup--")
def teardown():
print("function --teardown--")
def test_01():
print("---test01---")def test_02(): print('-----test02------')
運(yùn)行文件 pytest -s -v tmp.py
testcases/tmp.py::test_01
module --setup--
function --setup
-----test01---
PASSED function --teardown--
testcases/tmp.py::test_02
function --setup--
-----test02------
PASSED
function --teardown--
module --teardown--
Class 類級別
tmp2.py
class TestTmp2:
@classmethod
def setup_class(cls):
print('- class setup -')
@classmethod
def teardown_class(cls):
print('- class teardown - ')
def setup(self):
print('- method setup -')
def teardown(self):
print("- method teardown -")
def test_01(self):
print("-- test01 --")
def test_02(self):
print('-- test02 --')
pytest -s -v tmp2.py
tmp2.py::TestTmp2::test_01 - class setup
-- method setup -
-- test01 --
PASSED- method teardown -
testcases/tmp/tmp2.py::TestTmp2::test_02 - method setup -
-- test02 --
PASSED- method teardown -
- class teardown -
(2)fixture
函數(shù)級別
tmp.py
import pytest
@pytest.fixture(scope='module')
def fix_module():
print('-- module setup --')
yield
print('-- module teardown --')
@pytest.fixture()def fix_func(fix_module):
print('-- func setup --')
yield
print('-- func teardown --')
@pytest.fixture()def fix_func2():
print('-- func2 setup --')
yield
print('-- func2 teardown --')
def test_01(fix_func):
print('-- test 01 --')
def test_02(fix_func2):
print('-- test 02 --')
scope="module", module 級別
yeild 關(guān)鍵字
class 類級別
import pytest
@pytest.fixture(scope='module')
def fix_module():
print('-- module setup --')
yield
print('-- module teardown --')
class TestTmp2:
@pytest.fixture()
def fix_func(self, fix_module):
print('-- func setup --')
yield
print('-- func teardown --')
def test_01(self,fix_func):
print('-- test 01 --')
def test_02(self,fix_func):
print('-- test 02 --')
pytes -s -v tmp2.py
tmp2.py::TestTmp2::test_01 -- module setup --
-- func setup --
-- test 01 --
PASSED-- func teardown --
tmp2.py::TestTmp2::test_02 -- func setup --
-- test 02 --
PASSED-- func teardown --
-- module teardown --
tmp2.py
import pytest
@pytest.fixture(scope='module')
def fix_module():
print('-- module setup --')
yield
print('-- module teardown --')
@pytest.fixture(scope='session')
def fix_session():
print('-- session set up --')
yield
print('-- session teardown --')
@pytest.fixture(scope='class')
def fix_class():
print('-- class set up --')
yield
print('-- class tear down --')
@pytest.fixture(scope='function')
def fix_function():
print('-- function set up --')
yield
print('-- function tear down --')
@pytest.mark.usefixtures('fix_session','fix_module','fix_class' ,'fix_function')
class TestTmp2:
def test_01(self):
print('-- test 01 --')
def test_02(self):
print('-- test 02 --')
● session: 所有
● module: 整個(gè)文件
● class:類
● function:方法
testcases/testfixture/tmp2.py::TestTmp2::test_01
-- session set up --
-- module setup --
-- class set up --
-- function set up --
-- test 01 --
PASSED-- function tear down --
testcases/testfixture/tmp2.py::TestTmp2::test_02
-- function set up --
-- test 02 --
PASSED-- function tear down --
-- class tear down --
-- module teardown --
-- session teardown --
conftest.py 多個(gè)文件共享
4、參數(shù)化
(1)mark.parametrize
import pytest
a = [
('share','title1','conent1'),
('share','title2','conent2'),
]
@pytest.mark.parametrize('tab,title,content',a)
def test_a(tab,title,content):
print('----',tab,title,content,'-----')
(2)fixture 級別的參數(shù)化
import pytest
@pytest.fixture(params=[0,1],ids=['spam','ham'])
def a(request):
return request.param
def test_a(a):
print(f'--{a}--')
# assert a
def test_b(a):
print(f'=={a}==')
關(guān)于Pytest如何快速入門問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識。
網(wǎng)頁題目:Pytest如何快速入門-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://www.rwnh.cn/article42/ehshc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、企業(yè)網(wǎng)站制作、品牌網(wǎng)站制作、用戶體驗(yàn)、定制網(wǎng)站、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容