Appium+python的单元测试框架unittest(2)——fixtures(转)
(原文:https://www.cnblogs.com/fancy0158/p/10046333.html)
unittest提供的Fixtures用以在測試執(zhí)行前和執(zhí)行后進行必要的準備和清理工作,可以定義在模塊、類、用例執(zhí)行前后的工作
1、模塊
在模塊中定義setUpModule()和tearDownModule()處理模塊執(zhí)行前后的工作
def setUpModule():print('module start')def tearDownModule():print('module end')2、測試類
在測試類中定義setUpClass()和tearDownClass()函數(shù)處理測試類執(zhí)行前的工作,setUpClass和tearDownClass的寫法稍微不同:
a、需通過@classmethod進行裝飾
b、方法的參數(shù)是cls,cls與self并無不同之處,只是大家都習慣了這樣的命名
@classmethod def setUpClass(cls):print('Class start') @classmethod def tearDownClass(cls):print('class end')3、測試用例
即我們前面熟悉的setUp()和tearDown()方法,每個用例執(zhí)行前后都會調(diào)用
def setUp(self):print('test case start') def tearDown(self):print('test case end')在前面我們把Desired Capabilities 啟動 session 時相關的配置放在setUp()中,把driver的退出放在tearDown()中。導致每執(zhí)行一個測試用例,就需要配置連接一次移動端設備。
我們可以把相關的配置工作和清理工作放到測試類中,這樣就不必每次執(zhí)行一個case都重新配置和退出。比如,在計算器中,配置連接到移動端應用,連續(xù)執(zhí)行加運算和減運算case,再退出。
# coding:utf-8 from appium import webdriver import unittest, time#模塊的fixtures處理 def setUpModule():print('module start') def tearDownModule():print('module end')class TestFixture(unittest.TestCase):
#測試類中配置參數(shù)@classmethoddef setUpClass(cls):print('Class start')# Desired Capabilities啟動session時配置的參數(shù)desired_caps = {}desired_caps['platformName'] = 'Android' #移動平臺desired_caps['platformVersion'] = '4.4.2' # 指定平臺的系統(tǒng)版本desired_caps['deviceName'] = 'Android Emulator' # 設備名稱desired_caps['appPackage'] = 'com.android.calculator2' # 包名desired_caps['appActivity'] = '.Calculator' # launcherActivity
cls.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 定義webdriver對象@classmethoddef tearDownClass(cls):print('class end')cls.driver.quit() #所有用例執(zhí)行完之后退出def setUp(self):print('test case start') #用例執(zhí)行前def tearDown(self):print('test case end') #用例執(zhí)行后#加號運算casedef test_add(self):print('add case is running')self.driver.find_element_by_name("5").click()self.driver.find_element_by_name("+").click()self.driver.find_element_by_name("8").click()self.driver.find_element_by_android_uiautomator("new UiSelector().text(\"=\")").click()time.sleep(2)self.driver.find_element_by_name("CLR").click()#減運算casedef test_sub(self):print('sub case is running')self.driver.find_element_by_name("9").click()self.driver.find_element_by_xpath("//android.widget.Button[contains(@content-desc,'minus')]").click()self.driver.find_element_by_name("1").click()self.driver.find_element_by_name("=").click()time.sleep(2)self.driver.find_element_by_name("CLR").click()if __name__ == '__main__':#構(gòu)造測試集suite = unittest.TestSuite()suite.addTest(TestFixture('test_sub'))suite.addTest(TestFixture('test_add'))#執(zhí)行測試runner = unittest.TextTestRunner()runner.run(suite)
測試輸出結(jié)果如下:
module start Class start test case start sub case is running test case end test case start add case is running test case end class end module end可以看到,在測試機上,執(zhí)行完減運算后馬上執(zhí)行加運算,測試用例連續(xù)執(zhí)行。執(zhí)行完所有的測試用例后才退出
轉(zhuǎn)載請注明出處并帶上原鏈接
轉(zhuǎn)載于:https://www.cnblogs.com/dorlin/p/10381774.html
總結(jié)
以上是生活随笔為你收集整理的Appium+python的单元测试框架unittest(2)——fixtures(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二进制状态压缩相关操作
- 下一篇: Python3 练习笔记五