Pytest入门【2】
一、setup/teardown、setup_class/teardown_class所有
為什么需要這些功能?
比如:web自動化執行用例之前,請問需要打開瀏覽器嗎?用例執行后需要關閉瀏覽器?
class TestMashang:
? ? ? ?#這個在所有的用例之前只執行一次
? ? ? ?def setup_class(self):
? ? ? ? ? ? ?print('在每個類執行前的初始化的工作:比如:創建日志對象,創建數據庫的連接')
? ? ?#在每個用例之前執行一次
? ? ? def setup(self):
? ? ? ? ? ? ?print('\n在執行測試用例之前初始化的代碼:打開瀏覽器,加載網頁')
? ? ? ?def test_01_baili(self):
? ? ? ? ? ? ?print('\n測試百里')
? ? ? ?def test_02_xingyao(self):
? ? ? ? ? ? ?print('測試星瑤')
? ? ? ?def teardown(self):
? ? ? ? ? ? print('\n在執行測試用例之后的掃尾的代碼:關閉瀏覽器')
? ? ? ?def teardown_class(self):
? ? ? ? ? ?print('在沒法類執行后的掃尾的工作:比如銷毀日志對象,銷毀數據庫')
注意:和unittest不一樣,全是小寫
二、使用@pytest.fixture()裝飾器來實現部分用例的前后置
?裝飾器
@pytest.fixture(scope="",params="",autouse="",ids="",name="")
------------------------------------------------------------------------------------------------
1)scope表示的是被@pytest.fixture標記的標記的方法的作用域。function(默認),class,module,package/session
2)params:參數化(支持,列表[],元組(),字典列表[{},{},{}],字典元組({},{},{})
import pytest
@pytest.fixture(scope='function',params=['成龍','甄子丹','菜10'])
def my_fixture(request):
? ? ? print('前置')
? ? ? yield
? ? ? print('后置')
? ? ? return request.param
class TestMashang1:
? ? ? def test_01_baili(self):
? ? ? ? ? ? ?print('\n測試百里')
? ? ?def test_02_xingyao(self,my_fixture):
? ? ? ? ? ? ?print('\n測試星瑤')
? ? ? ? ? ? ?print('-------------'+str(my_fixture))
?params=['成龍','甄子丹','菜10']這里params是參數名,有s
request.param這里是屬性名,是沒有s的。
3).autouse=True:自動使用,默認False
4).ids:當使用params參數化時,給每一個值設置一個變量名,意義不大。
5).name:給表示的是被@pytest.fixture標記的方法去一個別名
當取了別名之后,那么原來的名稱你就用不了了
三、通過conftest.py和@pytest.fixture()結合使用實現全局的前置應用(比如:項目的全局登錄,模塊的全局處理)
1.conftest.py文件是單獨存放的一個夾具配置文件,名稱是不能更改。
2.用處可以在不同的py文件中使用同一個fixture函數
3.原則上conftest.py需要和運行的用例放到統一層,并且不需要做任何的import導入的操作。
總結:
setup/teardown,setup_class/teardown_class 它是作用于所有用例或者所有的類
@pytest.fixture()它的作用是既可以部分也可以全部前后置
confest.py和@pytest.fixture()結合使用,作用于全局的前后置
四、斷言
assert
assert 1==2
五、pytest結合allure-pytest插件生成allure測試報告
昨天:pytest-html
今天:allure-pytest
1.下載,解壓,配置path路徑
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的Pytest入门【2】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pytest入门【1】
- 下一篇: 【网络】浏览器输入URL到展示页面全过程