pytest學習筆記3

2021-10-07 02:12:49 字數 3192 閱讀 6485

import pytest

test_login_data =[(

"admin"

,"admin"),

("user"

,"123456")]

deflogin

(user, pwd)

:print

(f"登入使用者名稱:"

)print

(f"登入密碼:"

)if pwd ==

"admin"

:return

true

else

:return

false

@pytest.mark.parametrize(

"user, pwd"

,test_login_data)

deftest_login

(user, pwd)

: result = login(user, pwd)

assert result ==

true

,"失敗原因:密碼不正確"

if __name__ ==

'__main__'

: pytest.main(

["-s"

,"test_fixture_request.py"

])

執行結果:有2個用例,乙個測試通過,乙個測試失敗了,互不影響

test_fixture_request.py

.登入使用者名稱:admin

登入密碼:admin

f登入使用者名稱:user

登入密碼:123456

assertionerror: 失敗原因:密碼不正確

import pytest

test_login_data =

["admin"

,"12345"

]@pytest.fixture(scope=

"module"

)def

login

(request)

: user = request.param

print

(f"登入使用者名稱:"

)return user

@pytest.mark.parametrize(

"login"

, test_login_data,indirect=

true

)def

test_login

(login)

: a = login

print

(f"測試用李中login的返回值"

)assert a !=

""if __name__ ==

'__main__'

: pytest.main(

["-s"

,"test_fixture_request2.py"

])

新增indirect=true引數是為了把login當成乙個函式去執行,而不是乙個引數

執行結果:

test_fixture_request2.py 

登入使用者名稱:admin

.測試用李中login的返回值admin

登入使用者名稱:12345

.測試用李中login的返回值12345

import pytest

test_login_data =[,

]@pytest.fixture(scope=

"module"

)def

login

(request)

: user = request.param[

"user"

] pwd = request.param[

"pwd"

]print

(f"登入使用者名稱:"

)print

(f"登入密碼:"

)if pwd ==

"123456"

:return

true

else

:return

false

@pytest.mark.parametrize(

"login"

, test_login_data,indirect=

true

)def

test_login

(login)

: a = login

print

(f"測試用李中login的返回值"

)assert a ,

"失敗原因:密碼錯誤"

if __name__ ==

'__main__'

: pytest.main(

["-s"

,"test_fixture_request3.py"

])

執行結果:

test_fixture_request3.py 登入使用者名稱:admin

登入密碼:1111

f測試用李中login的返回值false

test_fixture_request3.py:24: assertionerror

test_fixture_request3.py 登入使用者名稱:admin

登入密碼:1111

f測試用李中login的返回值false```

# 4、自定義mark標記

```python

import pytest

@pytest.mark.add

def test_mark01():

print("執行mark01用例。。。")

@pytest.mark.add

def test_mark02():

print("執行mark02用例。。。")

def test_mark03():

print("執行mark03用例。。。")

def test_mark04():

print("執行mark04用例。。。")

執行add標記的用例

pytest -m "add" -s
不執行add標記的用例

pytest -m "not add" -s

pytest學習筆記

學習主要參考 2種方法 1.首先使用 pip 安裝 pytest pip3 install pytest 檢視 pytest 是否安裝成功 pip3 show pytest 2.直接import pytest 在pycharm 然後alt enter進行install 比第一種方法快捷 試驗 imp...

pytest學習筆記(一)

這兩天在學習pytest,之前有小用到pytest,覺得這個測試框架很靈巧,用在實現介面自動化 pytest requests 非常的輕便,然後很有興致的決定學習下,然後又發現了pytest selenium這麼個神奇的東東,加上pytest rerunfailures失敗case自動執行,pyte...

pytest學習教程 assert 3

assert就是斷言,每個測試用例都需要斷言。與unittest不同,pytest使用的是python自帶的assert關鍵字來進行斷言,大大降低了學習成本。assert關鍵字後面可以接乙個表示式,只要表示式的最終結果為true,那麼斷言通過,用例執行成功,否則用例執行失敗。pytest的用例失敗描...