昨晚凌晨 3 点有人撬我锁,还好我机智,睡之前都锁着的。不然被谋杀了,今天就不能更新帖子了。

狄更斯说:这是最好的时代,也是最坏的时代。我举双手同意。

言归正传,在使用 appium,或者你用 python 来写自动化脚本过程中。有时候我们想只运行一次配置项,appium 是 desired_caps 的一系列配置。webdriver 可能是浏览器初始化的配置。
思考如何把 N 个测试函数按顺序来进行衔接。
而我们会很苦恼,如果用 setup() 跟 teardown() 来进行配置,我想如果你跟我一样实践过,会遇到每个函数都会调用 setup() 跟 teardown(),也就是说,setup() 里你写了 desired_caps 的一系列配置,你很有可能需要重启 app。这对于我们想优化自动化脚本速度和想一连串运行函数的优质 IT 青年而言,简直不能忍
经过花了大量时间搜索以及跟同事的讨论,发现利器,setUpClass() 跟 tearDownClass()。或许我之前没深入了解 unittest 的函数的原因。接下来给 demo。本 demo 为模拟器自带的拨号程序
# -*- coding: utf-8 -*-
#测试报告
import os
import unittest,sys,time,re,datetime,HTMLTestRunner
from appium import webdriver
from time import sleep
import sys
#reload(sys)
#sys.setdefaultencoding('utf-8')
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

# Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)


class ContactsAndroidTests(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        print 'setUpClass'
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '4.4'
        desired_caps['deviceName'] = '192.168.56.101:5555'
        desired_caps['appPackage'] = 'com.android.dialer'
        desired_caps['appActivity'] = '.DialtactsActivity'

        cls.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

    @classmethod
    def tearDownClass(cls):
        cls.driver.close_app()
        cls.driver.quit()
        print 'tearDownClass'

    def setUp(self):
        print "setup"

    def tearDown(self):
        print 'teardown'

    def test_add_contacts(self):
        print 1
        #def test_B(self):
        self.driver.find_element_by_id('com.android.dialer:id/call_history_button').click()

    def test_A(self):
        print 2
        self.driver.find_element_by_class_name("android.app.ActionBar$Tab").click()


if __name__ == '__main__':
    #unittest.main(exit=False)
    suite = unittest.TestSuite()
    suite.addTest(ContactsAndroidTests("test_add_contacts"))
    suite.addTest(ContactsAndroidTests("test_A"))
    #suite.addTest(IposCase("testmaters"))
    timestr = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
    filename = "D:\\appium\\appiumresult\\result_" + timestr + ".html"
    print (filename)
    fp = open(filename, 'wb')
    runner = HTMLTestRunner.HTMLTestRunner(
                stream=fp,
                title='测试结果',
                description='测试报告'
                )
    #suite = unittest.TestLoader().loadTestsFromTestCase(ContactsAndroidTests)
    #unittest.TextTestRunner(verbosity=2).run(suite)
    runner.run(suite)
    #g_browser.quit()
    fp.close() #测试报告关闭
而我的测试报告如下图


ps:最近睡觉都在思考如何解决脚本上的问题,睡眠质量好差


↙↙↙阅读原文可查看相关链接,并与作者交流