Appium學習實踐(三)測試用例腳本以及測試報告輸出


之前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

 


免責聲明!

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



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