各位小伙伴好,閱讀這篇文章需要有基礎(chǔ)的python語(yǔ)言知識(shí)和軟件測(cè)試知識(shí)。
app測(cè)試在測(cè)試領(lǐng)域占比非常大,現(xiàn)在市場(chǎng)上有很多app軟件,對(duì)于app的測(cè)試就非常重要,特別是并發(fā)測(cè)試。接下來(lái)我們會(huì)介紹使用appium+pytest實(shí)現(xiàn)app的并發(fā)測(cè)試
首先來(lái)介紹一下appium是什么。Appium是一個(gè)開源,跨平臺(tái)的測(cè)試框架,可以測(cè)試原生及混合的移動(dòng)端應(yīng)用。
原生APP:就是專門針對(duì)某一類移動(dòng)設(shè)備而生的,所有界面和代碼都是專門為平臺(tái)設(shè)計(jì)。
混合APP:指它的一部分是原生界面和代碼,而另一部分是內(nèi)嵌web app。
說(shuō)通俗一點(diǎn),我們可以使用python語(yǔ)言編寫代碼,通過(guò)appium控制我們手機(jī)上的應(yīng)用軟件來(lái)達(dá)到我們測(cè)試的目的
接下來(lái)介紹一下pytest是什么,pytest也是一個(gè)測(cè)試框架,這個(gè)框架內(nèi)有很多api可以提供給我們使用,讓我們的測(cè)試更加簡(jiǎn)單,也有很多插件,可以讓我們輕易的實(shí)現(xiàn)并發(fā)測(cè)試,使用該框架可以很便捷的搭建我們測(cè)試場(chǎng)景和執(zhí)行測(cè)試用例
最后我們來(lái)介紹一下什么是并發(fā),通過(guò)字面意思就是一起發(fā)生,在代碼中可以使用多進(jìn)程或多線程來(lái)使用。映射到我們測(cè)試中就是多個(gè)人一起使用app中的某項(xiàng)功能,測(cè)試一下多人同時(shí)使用會(huì)不會(huì)發(fā)生問(wèn)題,這種多人同時(shí)使用的場(chǎng)景在app中是非常多的。
上面介紹了appium,pytest,并發(fā),下面我們就結(jié)合appium+pytest+python來(lái)進(jìn)行并發(fā)測(cè)試app.
配置好所有的環(huán)境,安裝好需要的軟件,就開始編寫腳本。
直接上代碼,
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#====#====#====#====
#Author:
#CreatDate:
#Version:
#====#====#====#====
importpytest
importtime
fromselenium importwebdriver
deftest_longQQ():
des = {} # 字典
des['platformName'] = 'Android'
des['platformVersion'] = '7.1.2'
des['deviceName'] = 'Android Emulator'
des['appPackage'] = 'com.tencent.qqlite'
des["noReset"] = True
des['appActivity'] = 'com.tencent.mobileqq.activity.RegisterGuideActivity'
# 連接appium
dr = webdriver.Remote('http://127.0.0.1:4723/wd/hub', des)
time.sleep(5)
#清空賬號(hào)
dr.findElementByAccessibilityId("請(qǐng)輸入QQ號(hào)碼或手機(jī)或郵箱").clear();
#輸入賬號(hào)
dr.findElementByAccessibilityId("請(qǐng)輸入QQ號(hào)碼或手機(jī)或郵箱").sendKeys("2062911635");
time.sleep(2)
#清空密碼
dr.findElementById("com.tencent.qqlite:id/password").clear();
#輸入密碼
dr.findElementById("com.tencent.qqlite:id/password").sendKeys("abc123456");
time.sleep(2)
#點(diǎn)擊登陸按鍵
dr.findElementById("com.tencent.qqlite:id/login").click();
#t如果為true,表示用例通過(guò)
t=dr.findElementById("com.tencent.mobileqq:id/login").isDisplayed()
assertt==True
if__name__ == "__main__":
pytest.main(['-s', '-n 4', "test_my.py"])#安裝了pytest-xdist,執(zhí)行時(shí)添加-n參數(shù),后面是數(shù)字代表并發(fā)的數(shù)量
注意點(diǎn): 需要安裝pytest和pytest-xdist
個(gè)人理解,要實(shí)現(xiàn)appium+pytest實(shí)現(xiàn)app并發(fā)測(cè)試,重點(diǎn)是理解多進(jìn)程或多線程,然后appium開啟多個(gè)服務(wù),pytest只是讓我們更加便捷的搭建測(cè)試用例。
當(dāng)然pytest有很多插件讓我們使用,這里用到了pytest-xdist這個(gè)插件,是他實(shí)現(xiàn)了多個(gè)進(jìn)程去執(zhí)行用例。
更多關(guān)于軟件測(cè)試培訓(xùn)的問(wèn)題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項(xiàng)目實(shí)操的話可以點(diǎn)擊咨詢課程顧問(wèn),獲取試聽資格來(lái)試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。