1.pytest配置文件
pytest.ini : pytest的主配置文件,可以改變pytest的默認行爲。也可以自定義參數。
conftest.py : 把公共代碼寫在裏面.主要爲把hook函數與fixture寫在裏面。作用於本目錄的用例與子目錄的用例
__init__.py:可以避免不同目錄下有相同的模塊名。沒有這個,運行時報錯。建議在測試用例的每個目錄都有此文件。
2.查看ini文件。
pytest --help.可知道pytest目錄支持哪些參數。也可以在conftest.py中寫hook函數來實現自定義參數。
其中常用:
-v 列出用例詳細信息
-s 顯示print信息
-k 支持測試用例名關鍵字運行
-m 標記並分組
--markers 可以顯示當前項目的所有標記。自定義的標記寫在pytest.ini中進行註冊。
norecursedirs = .* data config utils 縮小範圍搜索,否則會遞歸所有目錄,運行時
testpaths=tests 指定用例運行目錄
3.fixture yield
yield可以實現返回數據。
session級別 yield前的內容在整個測試項目中只執行一次,yield後的內容也是隻執行一次。
@pytest.fixture(scope = "session")
def env():
print("start")
# return 1
yield 1
print("end")
4.fixture 參數化
zip 函數的使用
import pytest
user_list = [{"name":"sophia","password":"111","caseName":"這是測試用例1"},{"name":"sophia222","password":"222","caseName":"這是測試用例2"}]
name_list = []
password_list = []
caseName_list = []
for user in user_list:
name_list.append(user["name"])
password_list.append(user["password"])
caseName_list.append(user["caseName"])
#注意zip的使用
s = list(zip(name_list, password_list))
class TestDemo2:
@pytest.mark.parametrize("name,password",s,ids=caseName_list)
def test_a(self,env,name,password):
print(env)
print(name,password)
print(s)
assert 10 + 1 == 11
未完待續......