国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【編寫UI自動(dòng)化測(cè)試集】Appium+Python+Unittest+HTMLRunner?

這篇具有很好參考價(jià)值的文章主要介紹了【編寫UI自動(dòng)化測(cè)試集】Appium+Python+Unittest+HTMLRunner?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

簡(jiǎn)介
?獲取AppPackage和AppActivity
?定位UI控件的工具
?腳本結(jié)構(gòu)
?PageObject分層管理
?HTMLTestRunner生成測(cè)試報(bào)告
?啟動(dòng)appium server服務(wù)
?以python文件模式執(zhí)行腳本生成測(cè)試報(bào)告
下載與安裝

下載需要自動(dòng)化測(cè)試的App并安裝到手機(jī)

獲取AppPackage和AppActivity

方法一

有源碼的情況直接打開AndroidManifest.xml文件,文件會(huì)有package信息

android.intent.action.MAIN決定應(yīng)用程序最先啟動(dòng)的Activity

android.intent.category.LAUNCHER決定應(yīng)用程序是否顯示在程序列表里

方法二

反編譯apk,反編譯后打開AndroidManifest.xml文件,文件會(huì)有package信息

方法三

aapt dump badging F:\****.apk
aapt工具是sdk自帶的一個(gè)工具,在sdk\builds-tools\目錄下,將appt.exe所在路徑添加至path環(huán)境變量里,cmd輸入aapt查看是否可使用,有如下響應(yīng)內(nèi)容即成功
【編寫UI自動(dòng)化測(cè)試集】Appium+Python+Unittest+HTMLRunner?

將需要查看的apk復(fù)制到電腦任意路徑下,例如F:\1.apk

使用命令 aapt dump badging F:\1.apk

運(yùn)行后的結(jié)果前兩行分別是包名appPackage和Activity

aapt dump xmltree F:\****.apk AndroidManifest.xml
方法四

將需要查看的apk復(fù)制到電腦任意路徑下,例如F:\1.apk

使用命令 aapt dump xmltree F:\1.apk AndroidManifest.xml

運(yùn)行后的結(jié)果就有包名appPackage和Activity
【編寫UI自動(dòng)化測(cè)試集】Appium+Python+Unittest+HTMLRunner?

??方法五

adb logcat -c //清除logcat內(nèi)容 adb logcat ActivityManager:I *:s //僅輸出標(biāo)記為“ActivityManager”并且優(yōu)先級(jí)大于等于“Info”的日志,*:S用于設(shè)置所有標(biāo)記的日志優(yōu)先級(jí)為S(無記載,最高優(yōu)先級(jí),沒有什么會(huì)被記載)

手機(jī)啟動(dòng)要查看的app,就會(huì)加載日志信息

結(jié)果如下圖:

【編寫UI自動(dòng)化測(cè)試集】Appium+Python+Unittest+HTMLRunner?

??方法六

adb logcat > D:/logs.txt 或 adb logcat|find "Displayed" >d:/logs.txt

啟動(dòng)app,cmd輸入adb?logcat > D:/logs.txt(開啟日志),輸入Ctrl+C(關(guān)閉日志),在日志查找appPackage和AppActivity,文件內(nèi)搜索Displayed找到Package和Activity信息

【編寫UI自動(dòng)化測(cè)試集】Appium+Python+Unittest+HTMLRunner?

?或使用該命令直接過濾再保存到txt文件內(nèi) adb logcat|find "Displayed" >d:/logs.txt

【編寫UI自動(dòng)化測(cè)試集】Appium+Python+Unittest+HTMLRunner?

最終,得到App的信息如下:

1 appPackage:com.nbi.aquatic
2 appActivity:.ui.login.LoginActivity
定位UI控件的工具

使用Android SDK的uiautomatorviewer.bat(在..\sdk\tools\ 目錄下),電腦開啟開發(fā)者模式,可以使用adb命令的狀態(tài)下使用該sdk自帶的工具,可視化安卓手機(jī)的界面信息

★ 腳本結(jié)構(gòu)

【編寫UI自動(dòng)化測(cè)試集】Appium+Python+Unittest+HTMLRunner?

somke_test.py 存放測(cè)試集

config.py 存放自動(dòng)化測(cè)試所用到的數(shù)據(jù),如賬號(hào)密碼,默認(rèn)密碼等

pool.py等 測(cè)試集中的一個(gè)測(cè)試用例的page層

base.py 頁(yè)面基礎(chǔ)層,供page層繼承

HTMLTestRunner.py 生成測(cè)試報(bào)告的模塊,可集成到代碼里不需在環(huán)境中安裝該模塊,也可在電腦python環(huán)境里安裝配置
(自行百度:Pycharm使用python3無法通過HTMLTestRunner生成測(cè)試報(bào)告)


config.py 存放自動(dòng)化測(cè)試所用到的數(shù)據(jù),如賬號(hào)密碼,默認(rèn)密碼等

1 settings = {
2    'admin': {
3       'number': '13600000000',
4       'password': 'qaz123'
5    },
6    'default_password': 'a123456'
7 }
8 ADMIN_NUMBER = settings['admin']['number']
9 ADMIN_PASSWORD = settings['admin']['password']

啟動(dòng)app的相關(guān)配置傳到appium服務(wù)端和連接手機(jī)的代碼寫在測(cè)試集TestCase外面,如果寫在初始化測(cè)試平臺(tái)的測(cè)試用例里則只能啟動(dòng)執(zhí)行一次用例

 1 desired_caps = {}
 2 # Android自動(dòng)化還是Ios自動(dòng)化
 3 desired_caps['platformName'] = 'Android'
 4 # Android操作系統(tǒng)版本
 5 desired_caps['platformVersion'] = '5.1'
 6 # 設(shè)備名稱
 7 desired_caps['deviceName'] = '127.0.0.1:62001'
 8 # 被測(cè)App包名
 9 desired_caps['appPackage'] = 'com.nbi.aquatic'
10 # 被測(cè)App的入口Activity名
11 desired_caps['appActivity'] = '.ui.login.LoginActivity'
12 desired_caps['automationName'] = 'Uiautomator2'
13 # 把以上配置傳到appium服務(wù)端并連接手機(jī)
14 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

啟動(dòng)app,用到的是unittest自帶的setUp方法

1 def setUp(self):
2    # 初始化測(cè)試平臺(tái)
3    self.driver = driver

關(guān)閉app,用到的不是unittest自帶的tearDown方法,而是自定義了一個(gè)test_*_end_testing函數(shù),這個(gè)函數(shù)負(fù)責(zé)關(guān)閉app,是在測(cè)試集里的最后一個(gè)測(cè)試用例

1 def test_36_end_testing(self):
2     """結(jié)束測(cè)試"""
3     self.driver.quit()

整體測(cè)試用例結(jié)構(gòu),采用PageObject分層管理

1.一個(gè)測(cè)試用例就是一個(gè)函數(shù),后期增加用例時(shí)在后面增加新函數(shù)即可

2.為了使用unittest框架執(zhí)行測(cè)試集,命名都以test開頭,例如test_16_creat_aquatype

3.每個(gè)用例又分獨(dú)立的page層,例如測(cè)試集里的用例test_16_creat_aquatype,其page層就是PoolPage,在編寫測(cè)試集時(shí)引入該文件即可,也就是testcase層調(diào)用page層

 1 from appium import webdriver
 2 from test_case.page_object.admin.pool import PoolPage
 3 import unittest
 4 import config
 5 import time
 6 class SmokeTest(unittest.TestCase):
 7   def setUp(self):
 8       # 初始化測(cè)試平臺(tái)
 9       self.driver = driver
10   def test_10_admin_login(self):
11       """手機(jī)登錄"""
12       LoginPage(self.driver).PhoneNumberlogin_action(
13          config.ADMIN_NUMBER,
14          config.ADMIN_PASSWORD,
15      )
16   def test_16_creat_aquatype(self):
17       """添加水產(chǎn)類型"""
18       PoolPage(self.driver).creat_aquatype(new_aquatype_name)
19   def test_17_creat_aquatic(self):
20       """養(yǎng)殖池添加養(yǎng)殖"""
21       PoolPage(self.driver).creat_aquatic()
22   def test_36_end_testing(self):
23       """結(jié)束測(cè)試"""
24       self.driver.quit()
25 if __name__ == '__main__':
26      # 定義一個(gè)單元測(cè)試容器
27      suite = unittest.TestSuite()
28      # addTest添加case到suite容器中,構(gòu)造測(cè)試集
29      suite.addTest(SmokeTest('test_10_admin_login'))
30      suite.addTest(SmokeTest('test_16_creat_aquatype'))
31      suite.addTest(SmokeTest('test_17_creat_aquatic'))
32      suite.addTest(SmokeTest('test_36_end_testing'))
33      # 執(zhí)行case
34      runner.run(suite)

4.測(cè)試用例test_16_creat_aquatype的page層就是PoolPage,每個(gè)page層又都繼承頁(yè)面基礎(chǔ)層BasePage

 1 from selenium.webdriver.common.by import By
 2 from test_case.page_object.base import BasePage
 3 import time
 4 class PoolPage(BasePage):
 5     """定位元素"""
 6     creataquatic_btn_loc = (By.ID, 'com.nbi.aquatic:id/tv_add_breed')
 7     select_starttime_btn_loc = (By.ID, 'com.nbi.aquatic:id/textView158')
 8     # 添加水產(chǎn)類型(水產(chǎn)名稱最長(zhǎng)10個(gè)字符)
 9     def creat_aquatype(self, aquatype_name):
10         time.sleep(3)
11         self.find_element(*self.creataquatic_btn_loc).click()
12     .......
13     # 養(yǎng)殖池添加養(yǎng)殖
14     def creat_aquatic(self):
15         self.find_element(*self.select_starttime_btn_loc).click()

5.頁(yè)面基礎(chǔ)層BasePage

 1 from selenium.webdriver.support.ui import WebDriverWait
 2 from selenium.webdriver.support import expected_conditions as EC
 3 class BasePage(object):
 4    """頁(yè)面基礎(chǔ)類,用于所有頁(yè)面的繼承"""
 5    def __init__(self, selenium_driver):
 6       self.driver = selenium_driver
 7       self.timeout = 30
 8       self.poll_frequency = 0.1
 9 
10    def find_element(self, *loc):
11       return self.driver.find_element(*loc)
12 
13    def find_elements(self, *loc):
14       return self.driver.find_elements(*loc)
15 
16    def content_appeared(self):
17       self.find_element()
18 
19    def wait(self, loc):
20       WebDriverWait(self.driver, 10, 0.005).until(
21       EC.visibility_of_element_located(loc)
22    )
23 
24    def wait_and_compare(self, loc, text):
25       WebDriverWait(self.driver, 30, 0.5).until(
26       EC.text_to_be_present_in_element(loc, text)
27    )

生成HTML測(cè)試結(jié)果報(bào)告

引入方式一,直接電腦python環(huán)境安裝HTMLTestRunner模塊

 1 import HTMLTestRunner
 2 if __name__ == '__main__':
 3     suite = unittest.TestSuite()
 4     suite.addTest(SmokeTest('test_*_*'))
 5     # 寫法一
 6     timestr = time.strftime('%Y%m%d', time.localtime(time.time())) # 本地日期作為報(bào)告名字
 7     filename = 'F:\\folder_data\\' # 文件名字及保存路徑
 8     fp = open(filename + (timestr + '.html'), 'wb')
 9     runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title='冒煙測(cè)試報(bào)告', description='用例執(zhí)行情況: ')
10 
11    # 寫法二
12    timestr = time.strftime('%Y%m%d', time.localtime(time.time()))
13    filename = '../_reports/' + timestr + '.html'
14    fp = open(filename, 'wb')
15    runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title='冒煙測(cè)試報(bào)告', description='用例執(zhí)行情況: ')
16 
17    # 執(zhí)行case,并生成一份測(cè)試報(bào)告
18    runner.run(suite)
19    fp.close()

引入方式二,將HTMLTestRunner下載集成在代碼內(nèi)

模塊下載地址:HTMLTestRunner - tungwaiyip's software文章來源地址http://www.zghlxwxcb.cn/news/detail-502763.html

 1 from packages.HTMLTestRunner import HTMLTestRunner
 2 if __name__ == '__main__':
 3     suite = unittest.TestSuite()
 4     suite.addTest(SmokeTest('test_*_*'))
 5     # 寫法三
 6     fp = open('../_reports/result.html', 'wb')
 7     runner = HTMLTestRunner(stream=fp, title='冒煙測(cè)試報(bào)告', description='用例執(zhí)行情況: ')
 8     # 執(zhí)行case,并生成一份測(cè)試報(bào)告
 9     runner.run(suite)
10     fp.close()

到了這里,關(guān)于【編寫UI自動(dòng)化測(cè)試集】Appium+Python+Unittest+HTMLRunner?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【自動(dòng)化測(cè)試】Pytest+Appium+Allure 做 UI 自動(dòng)化的那些事

    【自動(dòng)化測(cè)試】Pytest+Appium+Allure 做 UI 自動(dòng)化的那些事

    文本主要介紹下 Pytest+Allure+Appium 記錄一些過程和經(jīng)歷。 法主要用了啥: Python3 Appium Allure-pytest Pytest Appium 不常見卻好用的方法 Appium 直接執(zhí)行 adb shell 方法 #Appium 啟動(dòng)時(shí)增加 --relaxed-security 參數(shù) Appium 即可執(zhí)行類似adb shell的方法 appium -p 4723 --relaxed-security #使用方法 def adb_shell(se

    2024年01月25日
    瀏覽(89)
  • 【接口自動(dòng)化測(cè)試項(xiàng)目2.0】unittest與pytest無縫穿插對(duì)接,可以像postman一樣編寫代碼

    【接口自動(dòng)化測(cè)試項(xiàng)目2.0】unittest與pytest無縫穿插對(duì)接,可以像postman一樣編寫代碼

    ??專注于分享軟件測(cè)試干貨內(nèi)容,歡迎點(diǎn)贊 ?? 收藏 ?留言 ?? 如有錯(cuò)誤敬請(qǐng)指正! ??交流討論:歡迎加入我們一起學(xué)習(xí)! ??資源分享:耗時(shí)200+小時(shí)精選的「軟件測(cè)試」資料包 ?? 最困難的時(shí)候,也就是我們離成功不遠(yuǎn)的時(shí)候! 接口自動(dòng)化測(cè)試項(xiàng)目2.0 本框架主要是基于

    2024年02月03日
    瀏覽(48)
  • 震驚!強(qiáng)大的接口自動(dòng)化測(cè)試框架2.0,unittest與pytest無縫穿插對(duì)接,可以像postman一樣編寫代碼

    震驚!強(qiáng)大的接口自動(dòng)化測(cè)試框架2.0,unittest與pytest無縫穿插對(duì)接,可以像postman一樣編寫代碼

    接口自動(dòng)化測(cè)試項(xiàng)目2.0 本框架主要是基于 Python + unittest + ddt + HTMLTestRunner + log + excel + mysql + 企業(yè)微信通知 + Jenkins 實(shí)現(xiàn)的接口自動(dòng)化框架。 項(xiàng)目參與者: 陳勇志 技術(shù)支持郵箱: 262667641@qq.com 個(gè)人微信: Testing_player 個(gè)人博客地址: https://home.cnblogs.com/u/Nephalem-262667641 微信公眾號(hào):測(cè)

    2024年02月12日
    瀏覽(29)
  • Python自動(dòng)化測(cè)試框架:unittest介紹

    Unittest是Python中最常用的測(cè)試框架之一,它提供了豐富和強(qiáng)大的測(cè)試工具和方法,可以幫助開發(fā)者更好地保證代碼質(zhì)量和穩(wěn)定性,本文就來介紹下Unittest單元測(cè)試框架。 unittest是Python的單元測(cè)試框架,它提供了一套豐富的測(cè)試工具和方法,包括測(cè)試用例、測(cè)試套件、斷言、測(cè)試

    2024年02月05日
    瀏覽(34)
  • Python接口自動(dòng)化之unittest單元測(cè)試

    Python接口自動(dòng)化之unittest單元測(cè)試

    以下主要介紹unittest特性、運(yùn)行流程及實(shí)際案例。 一、單元測(cè)試三連問 1、 什么是單元測(cè)試? ? 按照階段來分,一般就是單元測(cè)試,集成測(cè)試,系統(tǒng)測(cè)試,驗(yàn)收測(cè)試。單元測(cè)試是對(duì) 單個(gè)模塊 、 單個(gè)類 或者 單個(gè)函數(shù) 進(jìn)行測(cè)試。 將訪問接口的過程封裝在函數(shù)里面; 接口測(cè)試就

    2024年02月07日
    瀏覽(22)
  • App自動(dòng)化測(cè)試|Appium+Python自動(dòng)化測(cè)試環(huán)境搭建

    App自動(dòng)化測(cè)試|Appium+Python自動(dòng)化測(cè)試環(huán)境搭建

    搭建過程步驟如下: 安裝jdk并配置好環(huán)境變量(jdk版本1.8以上) 安裝android-sdk并配置好環(huán)境變量;具體步驟見:Android Studio安裝(推薦使用這種方法安裝SDK) - 環(huán)境配置 - 測(cè)試人社區(qū) 安裝安卓模擬器 安裝node.js(官網(wǎng)下載安裝最新版本) ;下載地址:下載 | Node.js 中文網(wǎng) 找到wind

    2024年02月12日
    瀏覽(26)
  • webUI自動(dòng)化之基本框架搭建(python + selenium + unittest)_python ui自動(dòng)框架

    webUI自動(dòng)化之基本框架搭建(python + selenium + unittest)_python ui自動(dòng)框架

    3 from selenium.webdriver.common.by import By 4 5 driver = webdriver.Chrome() 6 driver.get(r’https://xxx’) # 打開瀏覽器并訪問該鏈接,這里的鏈接不便展示哈 7 driver.maximize_window() 8 9 # 定位元素并操作 10 driver.find_element(By.NAME, ‘username’).send_keys(‘luoyang’) 11 driver.find_element(By.NAME, ‘password’).send

    2024年04月17日
    瀏覽(28)
  • 簡(jiǎn)單實(shí)現(xiàn)接口自動(dòng)化測(cè)試(基于python+unittest)

    簡(jiǎn)單實(shí)現(xiàn)接口自動(dòng)化測(cè)試(基于python+unittest)

    本文通過從Postman獲取基本的接口測(cè)試Code簡(jiǎn)單的接口測(cè)試入手,一步步調(diào)整優(yōu)化接口調(diào)用,以及增加基本的結(jié)果判斷,講解Python自帶的Unittest框架調(diào)用,期望各位可以通過本文對(duì)接口自動(dòng)化測(cè)試有一個(gè)大致的了解。 為什么要做接口自動(dòng)化測(cè)試? 在當(dāng)前互聯(lián)網(wǎng)產(chǎn)品迭代頻繁的背景

    2024年02月07日
    瀏覽(21)
  • Python自動(dòng)化測(cè)試:unittest與pytest框架

    在Python中, unittest 和 pytest 都是常用的自動(dòng)化測(cè)試框架。它們提供了編寫測(cè)試用例、測(cè)試套件和執(zhí)行測(cè)試的強(qiáng)大功能。 1. unittest框架 unittest 是Python標(biāo)準(zhǔn)庫(kù)的一部分,因此無需額外安裝。它提供了豐富的斷言方法,用于驗(yàn)證測(cè)試結(jié)果。 示例代碼: python復(fù)制代碼 import unittest c

    2024年02月20日
    瀏覽(38)
  • Python自動(dòng)化測(cè)試框架之unittest使用詳解

    unittest是Python自動(dòng)化測(cè)試框架之一,提供了一系列測(cè)試工具和接口,支持單元測(cè)試、功能測(cè)試、集成測(cè)試等多種測(cè)試類型。unittest使用面向?qū)ο蟮乃枷雽?shí)現(xiàn)測(cè)試用例的編寫和管理,可以方便地?cái)U(kuò)展和定制測(cè)試框架,支持多種測(cè)試結(jié)果輸出格式 unittest 是python 的單元測(cè)試框架,它

    2024年02月07日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包