zoukankan      html  css  js  c++  java
  • Appium+python的单元测试框架unittest(1)(转)

    unittest为python语言自带的单元测试框架,python把unittest封装为一个标准模块封装在python开发包中。unittest中常用的类有:unittest.TestCase、unittest.TestSuite、unittest.TextTestRunner、test fixture

    一、单元测试框架

    单元测试框架并非只能用于单元测试,也可以用于编写和规范自动化测试用例。利用其组织测试用例、断言预期结果以及批量执行测试用例等功能。

    单元测试框架主要功能:(源自虫师《Selenium2自动化测试实战 基于python语言》)

    1、提供用例组织与执行

    提供一定的规范来编写测试用例,方便扩展和维护测试用例;

    2、提供丰富的比较方法

    测试用例往往需要有一个实际结果和预期结果比较的过程,单元测试框架会提供丰富的断言(assert)方法,用以判断用例的执行是否通过;

    3、提供丰富的日记

    测试用例执行失败时能抛出失败原因,用例执行完成后提供丰富的执行结果,包括执行时间、失败用例数、成功用例数等

    二、TestCase

    完整的测试流程,包括测试环境的搭建、测试的执行、测试后环境的还原。

     
    # coding:utf-8
    from appium import webdriver
    import unittest,time
    
    class TestCalculator(unittest.TestCase):
    
        # 测试前初始化配置
    def setUp(self): print('test start') # desired capabilities以字典形式存储,客户端将键值对发给服务器端 desired_caps = {} desired_caps['platformName'] = 'Android' # Android系统 desired_caps['platformVersion'] = '4.4.2' # 指定平台的系统版本 desired_caps['deviceName'] = 'Android Emulator' # 设备名称 desired_caps['appPackage'] = 'com.android.calculator2' # 包名 desired_caps['appActivity'] = '.Calculator' # launcherActivity self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) #定义webdriver对象
    def tearDown(self): print('test case end') self.driver.quit() #加号运算case def 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_name("=").click() time.sleep(2) self.driver.find_element_by_name("CLR").click() if __name__ == '__main__': unittest.main()
     

    setUp()方法用于测试用例执行前的初始化工作,tearDown()用于测试用例执行后的善后工作。unittest中所有以test开头的函数就是测试用例,我们编写测试用例时需要以test开头。

    .py文件有两种使用方式:作为模块调用和直接使用,如果它等于“__main__”表示直接使用。

    三、有多个测试用例

    1、多个用例

    在上面基础上,我们增加一个测试用例test_sub

     
    # coding:utf-8
    from appium import webdriver
    import unittest,time
    
    class TestCalculator(unittest.TestCase):
    def setUp(self): pass #此处省略
    def tearDown(self): print('test case end') self.driver.quit() #加号运算case def test_add(self): print('add case is running') # 点击运算操作 self.driver.find_element_by_name("1").click() self.driver.find_element_by_name("+").click() self.driver.find_element_by_name("8").click() self.driver.find_element_by_name("=").click() time.sleep(2) self.driver.find_element_by_name("CLR").click() #减运算case def test_sub(self): print('sub case is running') self.driver.find_element_by_name("9").click() #无法通过name属性定位到'-',使用xpath定位 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__':
           unittest.main()
     

    执行后输出结果如下:

    test start
    add case is running
    test case end
    test start
    sub case is running
    test case end

    可知:每执行一个case,都会执行一次setUp()和tearDown()。所以可以单独封装一个测试类,用于存放这两个函数,前提是所有的测试用例所需要的setUp()和tearDown()方法都一样;

    PS:测试用例的执行顺序是根据用例名按照ASCII码来排序的,与代码中case的先后顺序无关。数字和字母的顺序为:0~9,A~Z,a~z。如test_a、test_b、test_c.

    2、TestSuite和TextTestRunner

    TestSuite是一个测试套件,用来组装多个测试用例,可通过addTest方法把testCase添加到TestSuite中,再通过TextTestRunner对象的run()方法执行用例。

    如下,现在有两个测试用例test_add和test_sub,把他们依次加入TestSuite中再执行

     
    if __name__ == '__main__':
        #构造测试集
        suite = unittest.TestSuite()
        suite.addTest(TestCalculator('test_add'))
        suite.addTest(TestCalculator('test_sub'))
        #执行测试
        runner = unittest.TextTestRunner()
        runner.run(suite)
     

    使用TestSuite可以做到有选择地执行用例,不需要测试的case可以无需加入。TestSuite按照addTest()的先后顺序执行,需要先执行的case先添加到TestSuite中。

    软件测试
  • 相关阅读:
    ZOJ 1002 Fire Net
    Uva 12889 One-Two-Three
    URAL 1881 Long problem statement
    URAL 1880 Psych Up's Eigenvalues
    URAL 1877 Bicycle Codes
    URAL 1876 Centipede's Morning
    URAL 1873. GOV Chronicles
    Uva 839 Not so Mobile
    Uva 679 Dropping Balls
    An ac a day,keep wa away
  • 原文地址:https://www.cnblogs.com/dorlin/p/10369378.html
Copyright © 2011-2022 走看看