pytest知識點整理

2021-10-25 15:30:46 字數 4625 閱讀 8123

1.pytest用例規則

2.執行用例規則

3.斷言

4.setup和teardown

5.執行順序

setup_module>setup_function>teardown_function>setup_class>setup_method>setup>teardown>teardown_method>teardown_class>teardown_module

6.fixture之conftest.py(對比setup和teardown的優勢)--前置

7.fixture之yield實現teardown後置處理

1.如果其中乙個用例出現異常,不影響yield後面的teardown執行,執行結果不影響,並且全部用例執行之後,yield呼喚teardown操作
8.函式傳參和fixture傳引數request

傳引數request與parametrize需要搭配使用

request需要使用param進行配合request.param

9.fixture之autouse=true

可以設定為true開啟自動使用fixture功能,這樣用例就不用每次都去傳參了

10.呼叫fixture的三種方法

11.fixture與傳統單元測試框架(setup和teardown)區別

12.fixture詳細介紹-作為引數傳入,error和failed區別

13.使用fixture返回資料返回乙個元祖、list或字典-可以做成引數化

14.fixture與fixture互相呼叫

15.fixture的作用域(scope)

16.fixture引數化params

request 是pytest的內建 fixture ,主要用於傳遞引數

17.conftest.py作用範圍

18.addfinalizer終結函式

除了yield可以實現teardown,在request-context物件中註冊addfinalizer方法也可以實現終結函式
19.失敗重跑

pytest --returns 1 --html=report/html --self-contained-html
20.失敗截圖

21.執行上次失敗用例(--if和--ff)

22.pytest分布式執行(pytest-xdist)

23.重複執行用例(pytest-repeat)

24.引數化parametrize

@pytest.mark.parametrize("x",[0,1])

@pytest.mark.parametrize("y",[2,3])

def test_foo(x,y):

print("測試資料組合:x->%s" %(x,y))

25.cmdopt命令列傳參

@pytest.fixture

def cmdopt(request):

return request.config.getoption("--cmdopt")

def test_answer(cmdopt):

if cmdopt == "type1":

print("first")

elif cmdopt == "type2":

print("second")

pytest -s test_sample.py --cmdopt=type2

pytest -s test_sample.py --cmdopt type2

26.assert斷言

assert xx 判斷xx為真

assert not xx判斷xx不為真

assert a in b 判斷b包含a

assert a==b 判斷a等於b

assert a!=b判斷a不等於b

27.skip跳過用例

28.使用自定義標記mark

執行**時候指定mark名稱執行就可以

29.用例a失敗,跳過測試用例b和c並標記xfail

30.配置檔案pytest.ini

31.pytest.ini配置用例查詢規則

[pytest]

python_files = ***_*.py

python_classes = test*

python_functions= test_*

32.pytest-html報告優化(新增description)

33.功能測試用例allure

@allure.issue("")

@allure.testcase("")

def test_edit_classify5(self,login)

34.allure標記用例級別severity

35.allure描述用例詳細講解

36.allure.step()新增測試用例步驟

接下來測試用例設計,登陸可以單獨拿出來,當成前置操作,後面的步驟合起來就是乙個用例test_allure_step.py

def test_add_goods_and_bug(login_setup):

"""用例描述:

前置:登陸

用例步驟:1.瀏覽商品2.新增購物車3.購買4.支付

"""with allure.step("step1:瀏覽商品"):

open_goods()

with allure.step("step2:新增購物車"):

add_shopping_cart()

with allure_step("step3:生成訂單"):

bug_goods()

with allure_step("step4:支付"):

pay_goods()

with allure.step("斷言"):

assert 1==1

37.引數化(parametrize)結合allure.title()生成不同標題報告

@allure.title("用例描述,測試輸入:")

@pytest.mark.parameterize("test_input,expected",test_datas,ids=["輸入正常賬號,密碼,登入成功",

"輸入錯誤賬號,密碼,登入失敗",

"輸入正確賬號,密碼,登入成功"])

def test_login(test_input,expected):

result = login(test_input["username"],test_input["password"])

assert result["msg"] == expected

38.hooks函式獲取用例執行結果pytest_runtest_makereport

pytest_runtest_makereport這個鉤子方法,可以更清晰的了解用例的執行過程,並獲取到每個用例的執行結果。

執行用例的過程會經歷三個階段:setup-call-teardown,每個階段都會返回的 result

39.hooks函式改變用例執行順序pytest_collection_modifyitems

pytest預設執行用例是先根據專案下的資料夾名稱按ascii碼去收集的,module裡面的用例是從上往下執行的. pytest_collection_modifyitems 這個鉤子函式顧名思義就是改變用例的執行順序。

40.hooks函式之引數化ids用例描述為中文控制台輸出unicode編碼問題pytest_collection_modifyitems

41.hooks函式之統計測試結果(pytest_terminal_summary)

setup出現異常此時統計結果沒什麼問題,接下來看teardown異常情況-會不會執行

42.斷言失敗後還能繼續執行pytest-assume

@pytest.mark.parameterize(('x','y'),[(1,1),(1,0),(0,1)])

def test_******_assume(x,y):

print("測試資料x=%s, y=%s" %(x,y))

pytest.assume(x==y)

pytest.assume(x+y>1)

pytest.assume(x>1)

pytest("測試完成!")

@pytest.mark.parameterize(('x','y'),[(1,1),(1,0),(0,1)])

def test_******_assume(x,y):

print("測試資料x=%s,y=%s" %(x,y))

with assume: assert x==y

with assume: assert x+y >1

with assume: assert x>1

43.自定義用例順序pytest-ordering

@pytest.mark.run(order=2)

def test_foo():

print("用例111111")

assert true

@pytest.mark.run(order=1)

def test_bar():

print("用例2222222")

assert true

def test_g():

print("用例3333333")

assert true

知識點整理

一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...

知識點整理

一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...

知識點整理

一 狀態控制碼 code,control flag 標誌位欄位 u a p r s f 佔6位元。各 位元的含義如下 ack 確認位元 acknowledge 只有當ack 1時確認號字段才有效,代表這個封包為確認封包。當ack 0時,確認號無效。psh push function 若為1時,代表要...