po設計思想
1,什么是po
pageobject是一種涉及模式
減少冗余的代碼和對代碼進行管理
分離測試步驟及測試對象
2,po的好處
提高代碼復用率
集中管理定位信息,提高可維護行,
代碼可復用,降低成本,
不同po之間沒有交叉,可團隊並行開發
po設計原則
1,總的原則
封裝basepage,提取出來各個page中的公共方法
所有的po繼承basepage
2,方法封裝原則
共有的方法,點擊,輸入內容,獲取元素節點內容,等待
滑動頁面,執行js代碼等等
3,定位封裝原則
將每個po類的定位xpath分類做為類屬性進行封裝,命名風格統一,做到見名知意
pytest引入
pytest標記
@pytest.mark.skip 在用例方法上使用,即可跳過用例的執行
@pytest.mark.xfail 標記預期不會通過的用例
自定義
1,注冊標記:在啟動文件同級目錄下創建一個 pytest.ini的配置文件
2,在pytest.ini添加一個 pytest配置塊
3,在pytest的配置塊下面加一個mjarkers的配置項
4,在markers的配置項中去注冊標記
5,給對應的用例打標記,
@pytest.mark.注冊的標記名稱
[pytest] markers = addicated yuze class_
- 給類打標記
1,直接在類上面打
2,通過類屬性的pytestmark
class TestDome1: pytestmark = [pytest.mark.class_, pytest.mark.musen] def test_demo1_01(self): assert 1 == 100 def test_demo1_02(self): assert 100 == 100
斷言
assert斷言, 根據assert后面的表達式的結果是True還是False來決定是否斷言通過
原生的測試報告
pip install pytest-html
第一種 log 普通文本 TextTestRunner
--resultlog=report/demo.txt 相對路徑
第二種 xml,生成xml文件
--junitxml=report/demo.xml jenkins使用 html和xml 標記性語言
第三種 html HTMLTestRunner
--html=report/demo.html
用例編寫
pytest編寫用例,不使用ddt,因為不兼容,
pytest中使用pytest.mark.parameterize來實現數據驅動,給用例傳參
注意點
要么按照unittest的規則來寫,數據驅動,前后置都用unittest中的
要么按照pytest來寫,數據驅動,前后置都是pytest中的
回顧一下unittest中的ddt
# --------------------unittest中的數據驅動實現--------------------------
pytest的數據驅動實現
pytest的前后置方法
用例級別
用例類級別
# 類級別的前置后置
用例模塊級別
會話級別
前置條件與用例數據交互
使用一變量接收來自前置執行的結果,前置將需要返回給用例的內容卸載yield后,就可以直接接收,
注意:實例中注釋掉的方法只限於 不需要將前置中的數據傳給用例的情況下才適用。
pytest與unittest之間的對比
1,pytest兼容unittest,使用unittest寫的用例,可以通過pytest去執行
2,pytest寫用例更簡單
3,加載用例更智能
4,pytest可以對用例進行分類管理,執行用例更加的靈活
5,unittest是python中的官方庫,兼容性更好,更穩定,pytest在安裝的時候可能會出現同python版本的兼容問題
6,pytest支持的插件分廠豐富,功能擴展性強
7,pytest用例執行的前置后置處理更加高級
