一、setup/teardown,setup_class/teardown_class
- 為什么需要這些功能?
比如:web自動化執行用例之前,需要打開瀏覽器
class Testshaguo:
#這個在所有的用例之前只執行一次
def setup_class(self):
print('在每個類執行之前的初始化的工作:比如:創建日志對象,創建數據庫的連接,創建接口的請求對象')
#在每個用例之前執行 一次
def setup(self):
print('在執行測試用例之前執行的代碼:打開瀏覽器,加載網頁\n')
def test_100_baibai(self):
print('測試白白\n')
def test_101_baiai(self):
print('測試白愛\n')
def test_102_babai(self):
print('測試八白\n')
def teardown(self):
print('在執行測試用例之后掃尾的代碼:關閉瀏覽器\n')
def teardown_class(self):
print('在每個類執行之后的掃尾的工作:比如:銷毀日志對象,銷毀數據庫的連接,銷毀接口的請求對象')
注意:和unittest不同,全部小寫
二、使用@pytest.fixture()裝飾器,實現部分用例的前后置
裝飾器
@pytest.fixture(scope="",params="",autouse="",ids="",name="")
- scope表示的是被@pytest.fixture標記的方法的作用域。function(默認),class,module,package/session
- params:參數化,
- 支持:列表[],元祖(),字典列表{[],[]...},字典元祖{(),(),()...}
@pytest.fixture(scope="function", params="['成龍','你','我']")
def my_fixture(request):
print('前置')
yield request.param
print('后置')
- 支持:列表[],元祖(),字典列表{[],[]...},字典元祖{(),(),()...}
class Testshaguo:
def test_100_baibai(self):
print('測試白白\n')
def test_101_baiai(self,my_fixture):
print('測試白愛\n')
print('--------'+str(my_fixture))
-
params=['成龍','你','我'],這里params是參數名,有s
-
request.param這里是屬性名,沒有s
-
return和yield都表示返回的意思,但是return的后面不能有代碼,yield返回后面可以有代碼
-
autouse=True:自動執行,默認False
-
ids:當使用params參數化時,給每一個值設置一個變量名,意義不大
-
name:給表示的是被@pytest.fixture標記的方法取一個別名
- 當取了別名之后,那么原來的名稱不能使用
三、通過conftest.py和@pytest.fixture()結合使用實現全局的前置應用
- 比如:項目的全局登錄,模塊的全局處理
- conftest.py文件是單獨存放的夾具配置文件,名稱是不能更改
- 用處可以在不同的py文件中使用同一個fixture函數
- 原則上conftest.py需要和運行的用例放到同一層,并且不需要
總結:
- setup/teardown,setup_class/teardown_class 是作用于所有用例或者所有的類
- @pytest.fixture() 作用既可以部分,也可以全部前后置
- conftest.py和@pytest.fixture()結合使用,作用于全局的前后置
四、斷言
Assert
assert 1==2
五、pytest結合allure-pytest插件生成allure測試報告
- 插件:Allure-pytest
- path路徑配置
- 驗證:allure --version(cmd、pycharm)
- 問題:cmd可以驗證,pycharm驗證失敗?
- 解決方法:重啟pycharm
- 驗證:allure --version(cmd、pycharm)
- 加入命令,生成json格式的臨時報告
[pytest]
addopts = -vs --alluredir ./temp - 生成allure報告
os.system('allure generate ./temp -o ./report --clean')
- Allure generate 命令,固定的
- ./temp 臨時的json格式報告的路徑
- -o 輸出output
- ./report 生成的allure報告的路徑
- --clean 清空./report路徑原來的報告
浙公網安備 33010602011771號