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-html20.失敗截圖
21.執行上次失敗用例(--if和--ff)
22.pytest分布式執行(pytest-xdist)
23.重複執行用例(pytest-repeat)
24.引數化parametrize
@pytest.mark.parametrize("x",[0,1])25.cmdopt命令列傳參@pytest.mark.parametrize("y",[2,3])
def test_foo(x,y):
print("測試資料組合:x->%s" %(x,y))
@pytest.fixturedef 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=type226.assert斷言pytest -s test_sample.py --cmdopt type2
assert xx 判斷xx為真27.skip跳過用例assert not xx判斷xx不為真
assert a in b 判斷b包含a
assert a==b 判斷a等於b
assert a!=b判斷a不等於b
28.使用自定義標記mark
執行**時候指定mark名稱執行就可以
29.用例a失敗,跳過測試用例b和c並標記xfail
30.配置檔案pytest.ini
31.pytest.ini配置用例查詢規則
[pytest]32.pytest-html報告優化(新增description)python_files = ***_*.py
python_classes = test*
python_functions= test_*
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):37.引數化(parametrize)結合allure.title()生成不同標題報告"""用例描述:
前置:登陸
用例步驟: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
@allure.title("用例描述,測試輸入:")38.hooks函式獲取用例執行結果pytest_runtest_makereport@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
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)])43.自定義用例順序pytest-orderingdef 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
@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時,代表要...