之前Appium學習實踐(二)Python簡單腳本以及元素的屬性設置中的腳本,會有一個問題,就是在每個測試用例完成之后都會執行tearDown,然后重新setUp,這樣導致腳本的執行效率偏低,而且會有大量的重復性的步驟。當然有時測試腳本確實需要每次都重新開啟一個干凈的app。
下面說下怎樣讓一個測試用例執行完畢后接着執行后面的測試用例而不是重置。
#coding:utf-8 import unittest import os from selenium import webdriver from time import sleep import HTMLTestRunner import time class Dttest(unittest.TestCase): @classmethod def setUpClass(cls): print('start setup') desired_caps = {} desired_caps['platformName'] = 'iOS' desired_caps['deviceName'] = 'iPhone 5s' cls.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps) @classmethod def tearDownClass(cls): cls.driver.quit() print('tearDown') def test_test(self): sleep(10) print('test passed') def test_click(self): self.driver.find_element_by_name('point:').click() sleep(5) print('click passed') if __name__ == '__main__': suite = unittest.TestSuite() suite.addTest(Dttest('test_test')) suite.addTest(Dttest('test_click')) unittest.TextTestRunner(verbosity=2).run(suite)
這是使用的是Python的unittest中的setUpClass和tearDownClass,請見官方文檔:https://docs.python.org/2/library/unittest.html
會先執行test_test,執行完畢后再執行test_click,兩個測試用例執行完畢后再執行tearDownClass
----------------------------------------這里是分割線----------------------------------------
如果我們只能在命令行看到運行結果的話,有點不美,如果最后能有個report是不是能更好呢
下面來說下測試報告的輸出,用的是HTMLTestRunner
代碼如下
#coding:utf-8 import unittest import os from selenium import webdriver from time import sleep import HTMLTestRunner import time class Dttest(unittest.TestCase): @classmethod def setUpClass(cls): print('start setup') desired_caps = {} desired_caps['platformName'] = 'iOS' desired_caps['deviceName'] = 'iPhone 5s' cls.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps) @classmethod def tearDownClass(cls): cls.driver.quit() print('tearDown') def test_slideAndPressSure(self): sleep(10) print('test passed') def test_click(self): self.driver.find_element_by_name('point:').click() sleep(5) print('click passed') if __name__ == '__main__': suite = unittest.TestSuite() suite.addTest(Dttest('test_slideAndPressSure')) suite.addTest(Dttest('test_click')) #unittest.TextTestRunner(verbosity=2).run(suite) timestr = time.strftime('%Y-%m-%d %X',time.localtime(time.time())) filename = '/Users/lihui/Documents/PycharmProjects/test/report/'+timestr+'.html' fp = open(filename,'wb') runner = HTMLTestRunner.HTMLTestRunner( stream=fp, title='result', description='report' ) runner.run(suite) fp.close()
最后會在我們設定的文件夾中生成一個以日期命名的html的報告,當然也可以自行改名(文件夾的名字先自己建好)
結果如下
感覺還是有點簡陋。、后面再研究下
Ps:生成的報告中中文亂碼,將HTMLTestRunner.py中的latin-1改成utf-8
最后附上Python unittest的中文文檔地址http://pyunit.sourceforge.net/pyunit_cn.html#USING