在搭建测试框加之前,先弄个小例子初步测试一下,试试效果。在网上找的例子,代码如下:
--------------------------test_case(update.py)--------------------------
-- coding: utf-8 --
from appium import webdriver
import os
import time
desired_caps = dict()
desired_caps[‘platformName’] = ‘Android’
desired_caps[‘platformVersion’] = ‘7.0’
desired_caps[‘deviceName’] = ‘Android Emulator’
desired_caps[‘appPackage’] = ‘com.android.calculator2’
desired_caps[‘appActivity’] = ‘.Calculator’
driver = webdriver.Remote(‘http://localhost:4723/wd/hub’, desired_caps)
driver.find_element_by_name(“1”).click()
driver.find_element_by_name(“5”).click()
driver.find_element_by_name(“9”).click()
driver.find_element_by_name(“delete”).click()
driver.find_element_by_name(“9”).click()
driver.find_element_by_name(“5”).click()
driver.find_element_by_name("+").click()
driver.find_element_by_name(“6”).click()
driver.find_element_by_name("=").click()
运行起来测试问题了,现在可以弄个框架,python自带有unittest用这个还是很方便的。
借用了同事弄好的框加拿来修改了一下,整体框架结构如下图:
-- coding: utf-8 --
import unittest
from appium import webdriver
import os,time
class Update(unittest.TestCase):
@classmethod
def setUpClass(cls):
os.system(“adb disconnect”)
time.sleep(5)
os.system(“adb connect 192.168.28.155”)
os.system(“adb push /Users/zhh/Downloads/full_h03v57c2k-ota-20181023052850.zip /sdcard/update.zip”)
time.sleep(150)
desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '7.0'
desired_caps['deviceName'] = '192.168.28.155:5555'
desired_caps['appPackage'] = 'com.beeboxes.systemupgrade'
desired_caps['appActivity'] = '.SystemUpgradeActivity'
cls.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# wait for 30s
# cls.driver.implicitly_wait(30)
def test_update(self):
self.driver.find_element_by_id("com.beeboxes.systemupgrade:id/button_localupgrade").click()
self.assertEqual(self.driver.find_element_by_id("android:id/alertTitle").text,("Android 系统更新").decode("utf-8"))
@classmethod
def tearDownClass(cls):
cls.driver.quit()
--------------------------test_case--------------------------
--------------------------run_test(all_test.py)----------------------------
-- coding: utf-8 --
import unittest
import HTMLTestRunner
import os
import common.login as login
import common.driver as Driver
from test_case.test_person_manager import Person
from test_case.test_device_manager import DeviceManager
from test_case.test_device_group import DeviceGroup
from HTMLTestRunner import HTMLTestRunner
from common.readconfig import ReadConfig
from test_case.update import Update
from test_case.test_basic_setting import BasicSet
#获取文件夹路径
proDir = os.getcwd()
#找到配置文件
configPath = os.path.join(proDir,“data\config.ini”)
config=ReadConfig(configPath)
#create a new chrome session
driver=login.auth(config)
Driver.set_driver(driver)
#取测试结果路径
result_dir=os.path.join(proDir,“test_result”)
#加载测试类及方法
person_tests=unittest.TestLoader().loadTestsFromTestCase(Person)
device_tests=unittest.TestLoader().loadTestsFromTestCase(DeviceManager)
device_group_tests=unittest.TestLoader().loadTestsFromTestCase(DeviceGroup)
test_update = unittest.TestLoader().loadTestsFromTestCase(Update)
test_basic_setting = unittest.TestLoader().loadTestsFromTestCase(BasicSet)
#smoke测试需要加的testcase都写在此
smoke_tests=unittest.TestSuite([test_basic_setting])
#把smoke测试结果写入文件中
outfile=open(result_dir+"/SmokeTestReport.html",“wb+”)
runner = HTMLTestRunner.HTMLTestRunner(
stream=outfile,
title=‘Device Test Report’,
verbosity=2,
description=‘Smoke Tests’
)
runner.run(smoke_tests)
unittest.TextTestRunner().run(smoke_tests)
--------------------------run_test(all_test.py)----------------------------