【Python + ATX基於uiautomator2】之編寫unittest自動化測試腳本


不說廢話上代碼:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/08/31 09:43
# @Author  : zc
# @File    : 發起任務.py

import uiautomator2 as u2
import unittest
import uiautomator2.ext.htmlreport as htmlreport
from time import sleep


class TestcitymineSafety(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.u = u2.connect_usb('708ad0fy')
        cls.u.healthcheck()  # 解鎖屏幕並啟動uiautomator服務
        # hrp = htmlreport.HTMLReport(cls.u, 'report')
        # hrp.patch_click()

        # cls.u.disable_popups(True)  # 允許自動處理彈出框
        cls.u.toast.show("測試開始", 3)

    @classmethod
    def tearDownClass(cls):
        cls.u.toast.show("測試結束", 3)
        cls.u.app_stop_all()
        cls.u.service("uiautomator").stop()  # 停止uiautomator守護程序,允許其他測試框架如 appium 運行

    def setUp(self):
        #啟動小賣安全
        self.d = self.u.session("cn.sqm.citymine_safety")  # restart app
        sleep(0.2)
        # 輸入用戶名
        self.d(resourceId="cn.sqm.citymine_safety:id/et_login_id").send_keys("xxx")
        self.d.click(0.924, 0.607)
        # 輸入密碼
        self.d(resourceId="cn.sqm.citymine_safety:id/et_login_password").set_text("xxx")
        self.d.click(0.924, 0.607)
        # 點擊登錄按鈕
        self.d(resourceId="cn.sqm.citymine_safety:id/btn_login").click()
        print("登陸成功!")


    def tearDown(self):
        #返回首頁
        # sleep(0.5)
        # self.d(className="android.widget.ImageView").click()
        #點擊我的
        self.d(resourceId="cn.sqm.citymine_safety:id/rb_single_center").click()
        #退出賬號
        self.d(text="安全退出賬號").click()
        #返回首頁home
        self.d.press("home")
        print("返回首頁")
        # pass

    def testPrivateFM(self):  # 發起任務
        # 點擊發起任務
        self.d(className="android.widget.ImageView", instance=10).click()
        # 選擇任務類型:全部0、專項1、日常2、火災3
        self.d(resourceId="cn.sqm.citymine_safety:id/tv_select_task_type").click()
        sleep(0.5)
        for i in range(0):
            self.d(className="android.view.View").drag_to(0.498, 0.806, duration=0.5)
        self.d(resourceId="cn.sqm.citymine_safety:id/btn_confirm").click()
        # 檢查單位:IOS開發
        self.d(resourceId="cn.sqm.citymine_safety:id/tv_select_inspection_area").click()
        self.d(resourceId="cn.sqm.citymine_safety:id/item_tv_next_level").click()
        self.d(text='區域1').click()
        # 隱患類型:其他0、交通1、維穩2、火災3
        self.d(resourceId="cn.sqm.citymine_safety:id/tv_select_hidden_danger_type").click()
        for i in range(0):
            self.d(className="android.view.View").drag_to(0.49, 0.8, duration=0.5)
        self.d(text='確定').click()
        # 隱患描述
        self.d(resourceId="cn.sqm.citymine_safety:id/et_hidden_danger_description").set_text("其他問題")
        self.d.click(0.924, 0.607)
        # 照片:1
        self.d(resourceId="cn.sqm.citymine_safety:id/iv_choose_photos").click()
        self.d(text=u"手機相冊").click()
        self.d(resourceId="cn.sqm.citymine_safety:id/v_selected", className="android.widget.ImageView", instance=10).click()
        self.d(resourceId="cn.sqm.citymine_safety:id/done").click()
        # 違反制度:違反員工行為規范
        self.d(resourceId="cn.sqm.citymine_safety:id/iv_add_violation").click()
        self.d(resourceId="cn.sqm.citymine_safety:id/item_tv_content_violation", text=u"其他").click()
        self.d(resourceId="cn.sqm.citymine_safety:id/tv_complete").click()
        # 向上滑動拖拽
        self.d(className="android.widget.LinearLayout").drag_to(0.498, 0.00, duration=0.5)
        # 整改期限:
        self.d(resourceId="cn.sqm.citymine_safety:id/tv_please_the_rectification_date").click()
        for i in range(0):
            self.d(resourceId="cn.sqm.citymine_safety:id/day").drag_to(0.82, 0.8, duration=0.5)
        self.d(text='確定').click()
        # 協同人員
        list = ["aa", "檢查01"]
        self.d(resourceId="cn.sqm.citymine_safety:id/item_tv_personnel_name").click()
        for i in range(len(list)):
            self.d(resourceId="cn.sqm.citymine_safety:id/item_tv_personnel_name", text=list[i]).click()
        self.d(resourceId="cn.sqm.citymine_safety:id/tv_complete").click()
        # 區域負責人
        self.d(resourceId="cn.sqm.citymine_safety:id/item_tv_personnel_name", className="android.widget.TextView",
          instance=len(list) + 1).click()
        for i in range(2):
            self.d(resourceId="cn.sqm.citymine_safety:id/lv_area_manager").click()
        self.d(resourceId="cn.sqm.citymine_safety:id/item_tv_department", text=u"區域04").click()
        self.d(resourceId="cn.sqm.citymine_safety:id/tv_complete").click()
        sleep(0.5)
        #提交按鈕
        self.d(resourceId="cn.sqm.citymine_safety:id/btn_submit").click()


        #斷言
        # 向下滑動拖拽
        self.d(className="android.widget.LinearLayout").drag_to(0.473, 0.99, duration=0.5)
        sleep(0.5)
        text = self.d(resourceId="cn.sqm.citymine_safety:id/tv_select_task_type").get_text()
        print(text)
        self.assertEqual(text,"專項任務","錯誤!")



if __name__ == '__main__':
    unittest.main()

 

具體文章請參考:

感謝:codeskyblue 大神的文章

ATX 《小白入門篇:python uiautomator2 的代碼示例 (包含 app 管理,session 控制,toast,htmlreport,unittest ..)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM