基於 UI 層的 pytest 使用

周小麗發表於2021-01-13

同事研究的基於UI層的pytest指令碼

環境配置

1、軟體包安裝
python3.7
pip install pytest-ordering
pip install pytest
pip install selenium (https://www.cnblogs.com/eastonliu/p/9088301.html[元素定位教程])
https://npm.taobao.org/mirrors/chromedriverpython環境目錄下)(谷歌瀏覽器驅動,解壓到到
pip install allure-pytest
pip install psycopg2
pip install pytest-assume
pip install pytest-rerunfailures
pip install Appium-Python-Client
安裝SDK和jdk

2、環境配置
allure 配置bath環境變數(https://www.cnblogs.com/haohuixiang/p/12627551.html)

3、命令
指令碼執行命令:pytest
報告生成命令:allure generate report/ -o report/html --clean

工程包結構

指令碼解析

1、從order=0的指令碼開始執行,將各頁面瀏覽器的關閉操作禁止,原因是指令碼中各頁面都有寫了個關閉瀏覽器的操作。(按住ctrl,再點選函式即可跳轉到相應的函式頁面)

2、其餘各頁面的指令碼邏輯基本是一致的
1)獲取瀏覽器驅動: DriverUtils.get_test_driver()
2)獲取當前頁面的類方法: LoginProxy()
3)引數定義,讀取json中的入參: @pytest.mark.parametrize
4)定義一個方法(傳參):def test_login()
(1)呼叫已定義好的類中的方法,比如登入(傳參)self.login_handle.input_id(id_1)
(2)呼叫輸入使用者id的方法:def input_id(self, id_1)
(3)定義查詢使用者id的方法:def find_id(self):
(4)元素定位方法:self.ID = (By.CSS_SELECTOR, "[placeholder = '賬號']")
5)文字斷言:assert is_not_element_by_text()
6)截圖操作:allure.attach(self.driver.get_screenshot_as_png(), "查詢", allure.attachment_type.PNG)
7)資料庫斷言:inquire_sql_cs("select device_status from am_iot_device where bind_code= '{}';".format(web_base_page.sold_number))

相關文章