一、pytest 特點
- 支持參數化
- 支持某些測試跳過(skip)
- 支持重復執行失敗的case
- 支持執行部分用例
- 方便jenkins與allure報告
二、用例執行規則
- 只執行 pytest ,會查找當前目錄及其子目錄下以 test_*.py 或 *_test.py 文件,找到文件后,在文件中找到以 test 開頭函數並執行
三、常用方法
1、fixture
1)定義fixture:@pytest.fixture()
2)調用fixture:
- 在需要調用的函數()內把定義fixture的函數名稱當做參數傳入。
- @pytest.mark.usefixtures() 的括號內填入定義fixture的函數名稱。
兩者的區別,需要到reture 值時,只能使用傳參的方式。不需要到reture,兩者都可以使用。
2、skip(跳過用例)
1)調用方法:@pytest.mark.skip()
3、xfail(預期失敗)
1)調用方式:@pytest.mark.xfail() ,注:xfail(condition, reason)
--condition 預期失敗的條件
--reason 預期失敗的原因
4、parametrize (參數化)
1)調用方式:@pytest.mark.parametrize () ,在括號內填入key與value。
5、flaky(失敗重跑)
1)調用方式:@pytest.mark.flaky(reruns=5, reruns_delay=1)
6、pytest hook 鈎子函數(可以自定義功能或者插件)
什么是hook 函數?
1)通俗的說,就是根據軟件定義某些鈎子函數,當軟件命中某些行為時就會執行鈎子函數內設定好的邏輯。前提必須提供給外部使用,相當於對軟件進行監聽和修改。
什么情況使用到hook 函數呢?
1)在pytest 中Hook函數通常需要在conftest.py(全局生效)文件中定義。(如果不在這個文件內定義也是可以,只能局部生效)
1、獲取pytest 執行結果,@pytest.hookimpl 2、修改pytest 亂碼(參數化用例中文名稱),pytest_collection_modifyitems()。 3、提前進行異常處理,避免用例執行失敗終止測試。
4、進行用例參數化。
四:allure 特性