G7PH测试流程

测试功能部分:
1.自动读取电脑内被测试文件和设备内播放器列表解析的所有文件,然后进行对比,判断被测试文件是否被解析;
2.自动选择文件点击;
3.判断是否能播放,还是被跳过;
4.判断是否在播放(进度条有没有动);

#coding:utf-8
from appium import webdriver
from time import sleep
import os
from PIL import Image
import math
import operator
from functools import reduce
import unittest

sleep(2)
desires_caps = {}
desires_caps['platformName'] = 'Android'
desires_caps['platformVersion'] = '8.1.0'
desires_caps['deviceName'] = '00001234'
desires_caps['appPackage'] = 'com.cidana.testmediaplayer'
desires_caps['appActivity'] = 'com.cidana.testmediaplayer.FileListActivity'
desires_caps["automationName"] = 'uiautomator1'
desires_caps['noReset'] = True
desires_caps['newCommandTimeout'] = 500
driver = webdriver.Remote('http://localhost:4723/wd/hub', desires_caps)

sleep(2)

sleep(1)

#遍历设备中播放器中的文件
def device_filename():
    global device_filenameList2  # 定义全局变量
    device_filenameList = []
    s = driver.find_elements_by_class_name("android.widget.TextView")  # 定位一组元素
    for i in s:
        print(i.text)  # 输出每个文件名
        device_filenameList.append(i.text)  # 向列表中添加文件名
    Swiped = True
    while (Swiped == True):
        before_swipe = driver.page_source  # 获取滑动前页面元素
        driver.swipe(1120, 600, 1120, 268, 3000)  # 滑动
        s1 = driver.find_elements_by_class_name("android.widget.TextView")
        for i in s1:
            device_filenameList.append(i.text)
        after_swipe = driver.page_source  # 获取滑动后页面元素
        if before_swipe == after_swipe:  # 判断是否滑动到底部,如果前一个页面和后一个页面完全相同,说明滑动到底部
            Swiped = False
        else:
            Swiped = True
        # print(Swiped)
    device_filenameList2 = list(set(device_filenameList))  # 列表去重
    device_filenameList2.sort(key=device_filenameList.index)  # 列表仍保持之前列表的顺序排序
    print(device_filenameList2)
#获取U盘中所有的被测试文件
def GetFileList(dir, musicfile_List):
         if os.path.isfile(dir):
             list_dir = list(dir)
             del list_dir[0:13]  # 删去序列0-13的字符,因为设备中的名字和在U盘内的名字不一样,需要修改
             list_dir = ''.join(list_dir)  # list_dir再等于序列所对应的字符
             musicfile_List.append('/storage/usb1/G7PH/Video/G7PH软解/' + list_dir)  # 将文件名添加进列表
         elif os.path.isdir(dir):
             for s in os.listdir(dir):
                 # 如果需要忽略某些文件夹,使用以下代码
                 # if s == "xxx":
                 # continue
                 newDir = os.path.join(dir, s)
                 GetFileList(newDir, musicfile_List)
         return musicfile_List
#比较两个图片的相识度,differ为0时,两张图片相同
def compare(pic1, pic2):
    global differ
    differ = 0
    '''
    :param pic1: 图片1路径
    :param pic2: 图片2路径
    :return: 返回对比的结果
    '''
    image1 = Image.open(pic1)
    image2 = Image.open(pic2)
    histogram1 = image1.histogram()
    histogram2 = image2.histogram()
    differ = math.sqrt(reduce(operator.add, list(map(lambda a, b: (a - b) ** 2, histogram1, histogram2))) / len(histogram1))
#截图
def screen():
    screename0 = r"screen" + ".png"
    driver.get_screenshot_as_file(screename0)
    sleep(0.5)
    screename1 = r"screen1" + ".png"
    driver.get_screenshot_as_file(screename1)

class TestG7(unittest.TestCase):
#判断被测试文件是否被设备解析成功
    def test_parse(self):
        u"""解析判断"""
        global List
        List = GetFileList('D:\G7\G7PH软解', [])
        for i in range(len(List)):
            print(i, List[i])
        print(List)
        device_filename()
        for i in range(len(List)):
            if(List[i] in device_filenameList2):#如果被测试文件存在在设备文件列表中
                print(List[i] + "  PASS")
            else:
                print(List[i] + '  FAIL')
        driver.quit()#退出播放器
    #测试播放情况
    def test_play(self):
        u"""播放情况判断"""
        driver = webdriver.Remote('http://localhost:4723/wd/hub', desires_caps)
        sleep(2)
        List = GetFileList('D:\G7\G7PH软解', [])
        for i in range(len(List)):
            print(i)
            print(List[i])
            after_page = False
            before_page = True
            sleep(1)
            while(before_page != after_page):
                sleep(3)
                try:
                    driver.find_element_by_android_uiautomator('text("{}")'.format(List[i])).click()#定位被测试文件列表中文件并点击
                    print("点击成功")
                    try:
                        driver.find_element_by_android_uiautomator('text("{}")'.format(List[i])).click()#再次定位判断是否播放成功
                        print("播放成功")
                        screen()
                        compare('screen.png', 'screen1.png')
                        print(differ)
                        if (differ != 0):
                            print("播放pass")
                        else:
                            print("播放Failed")
                        driver.keyevent(4)
                        sleep(6)
                    except:
                        print("skip")#如果文件被跳过,输出skip
                        driver.keyevent(4)
                        sleep(7)
                    break
                except:
                    before_page = driver.page_source
                    driver.swipe(1120, 600, 1120, 268, 3000)
                    after_page = driver.page_source

导出报告部分:

#coding:utf-8
import os, time, unittest
import HTMLTestRunner

#需要对HTMLTestRunner.py进行修改
#第94行,将import StringIO修改成import io
#第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()
#第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:
#第766行,将uo = o.decode('latin-1')修改成uo = e
#第775行,将ue = e.decode('latin-1')修改成ue = e
#第631行,将print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))

report_path = 'E:/G7PHScript1/report'#报告存放位置
now = time.strftime("%Y-%m-%d %H:%M", time.localtime(time.time()))
title = u"G7PH测试"
report_abspath = os.path.join(report_path, title + now + ".html")

def all_case():
    case_path = os.getcwd()
    discover = unittest.defaultTestLoader.discover(case_path, pattern="script1.py")
    print(discover)
    return discover

if __name__ == "__main__":
    fp = open(report_abspath, "wb")
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=title + ': ')
    runner.run(all_case())
    fp.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值