該網(wǎng)站上更新文章有延遲戚嗅,如需查看關(guān)于python+appium文章,請(qǐng)前往testhome關(guān)注我哦。https://testerhome.com/topics/27802
這篇文章總結(jié)了我平時(shí)用的比較多的3個(gè)設(shè)置欧漱,后續(xù)有用到其它的,會(huì)繼續(xù)更新哦葬燎。
一误甚、運(yùn)行時(shí)會(huì)重裝APP問題
問題:在使用Appium運(yùn)行自動(dòng)化代碼的時(shí)候,每次運(yùn)行會(huì)自動(dòng)清除APP的原來數(shù)據(jù)谱净,并將APP卸載窑邦,再重新安裝打開。
解決:在APP啟動(dòng)的參數(shù)設(shè)置中添加"noReset": True壕探,表示啟動(dòng)APP時(shí)不清除APP里的原有的數(shù)據(jù)冈钦。未設(shè)置該參數(shù),系統(tǒng)默認(rèn)為"noReset": False李请,表示在啟動(dòng)APP時(shí)會(huì)自動(dòng)清除卸載APP瞧筛,重新安裝,所以每次打開的APP都是新安裝的APP导盅。
代碼示例:
from appium import webdriver
def start(self):
caps = {"platformName": "Android",
"deviceName": "ABCDEFGHIJKLMNOPQ",
"platforVersion": "9",
"appPackage": "com.sina.weibo",
"appActivity": "com.sina.weibo.SplashActivity",
"autoGrantPermissions": "true",
"automationName": "UiAutomator2",
# 啟動(dòng)app時(shí)不要清除app里的原有的數(shù)據(jù)
"noReset": True
}
self.driver = webdriver.Remote("<http://localhost:4723/wd/hub>", caps)
self.driver.implicitly_wait(20)
二驾窟、執(zhí)行測試用例會(huì)重啟APP
問題:執(zhí)行多條測試用例時(shí),每執(zhí)行完一個(gè)測試用例认轨,都會(huì)重新啟動(dòng)AP
解決:在測試用例類中導(dǎo)入pytest,將測試用例類中的初始化函數(shù)設(shè)置為setup_class月培,修改后啟動(dòng)APP嘁字,只會(huì)執(zhí)行一次初始化。
setup_class(self):這是一個(gè)class級(jí)別的setup函數(shù)杉畜,它會(huì)在這個(gè)測試類TestAccountLogin里所有test執(zhí)行之前纪蜒,被調(diào)用一次。
teardown_class(self):這是一個(gè)class級(jí)別的teardown函數(shù)此叠,他會(huì)在這個(gè)測試類TestAccountLogin里所有test執(zhí)行之后纯续,被調(diào)用一次。
代碼示例:
import pytest
from common.init import AppStart
class TestAccountLogin:
def setup_class(self):
self.accountloginpage = AppStart.start()
def teardown_class(self):
AppStart.quit()
三灭袁、自定義測試用例執(zhí)行順序
問題:默認(rèn)情況下猬错,pytest框架的測試用例執(zhí)行順序是按照字母的順序執(zhí)行的,如何自定義設(shè)置測試用例的執(zhí)行順序茸歧?
解決:有兩種解決方法倦炒,分別為:
1.使用函數(shù)修飾符的方式來標(biāo)記被測試函數(shù)執(zhí)行的順序,插件名稱為pytest-ordering
2.將測試用例命名為數(shù)字
方法一:使用函數(shù)修飾符的方式來標(biāo)記被測試函數(shù)執(zhí)行的順序
1.需要先安裝插件pytest-ordering
- 安裝包安裝:python setup.py install
- 命令行安裝:pip3 install pytest-ordering
插件安裝成功如下圖所示
2.使用方法
- 標(biāo)記于被測試函數(shù)软瞎,@pytest.mark.run(order=x)
- 根據(jù)order傳入的參數(shù)來解決運(yùn)行問題
- order值全為正數(shù)或全為負(fù)數(shù)時(shí)逢唤,值越小拉讯,優(yōu)先級(jí)越高
- 正數(shù)和負(fù)數(shù)同時(shí)存在時(shí),正數(shù)優(yōu)先級(jí)高
如下所示:
import pytest
from common.init import AppStart
class TestAccountLogin:
def setup_class(self):
self.accountloginpage = AppStart.start()
@pytest.mark.run(order=-1)
def test_account(self):
print("01")
@pytest.mark.run(order=2)
def test_pwd(self):
print("02")
@pytest.mark.run(order=3)
def test_phone(self):
print("03")
def teardown_class(self):
AppStart.quit()
以上會(huì)按照test_pwd→test_phone→test_account的順序執(zhí)行
方法二:將測試用例的函數(shù)名命名為數(shù)字鳖藕,即會(huì)按照數(shù)字由小到大的順序執(zhí)行
如下所示:
import pytest
from common.init import AppStart
class TestAccountLogin:
def setup_class(self):
self.accountloginpage = AppStart.start()
@pytest.mark.run(order=-1)
def test_01(self):
print("01")
@pytest.mark.run(order=2)
def test_02(self):
print("02")
@pytest.mark.run(order=3)
def test_03(self):
print("03")
def teardown_class(self):
AppStart.quit()
會(huì)按照01→02→03的順序執(zhí)行
以上內(nèi)容有錯(cuò)誤的地方魔慷,大家多多指正,謝謝著恩!