美文网首页
Appium自动化测试(3)-用unittest编写测试用例

Appium自动化测试(3)-用unittest编写测试用例

作者: ss酱 | 来源:发表于2017-02-27 23:18 被阅读1146次

    appium文档:http://appium.io/slate/en/master/?python#about-appium
    unittest文档

    Unittest介绍

    Unittest是python的单元测试框架(java的类似框架是testng),也叫PyUnit,为自动化测试提供强力支持,最主要是以下两个特性:
    1、setUp和tearDown提供了测试用例执行前后的准备工作和清除工作
    2、TestSuite将测试用例组装起来

    使用

    1、import unittest
    2、定义一个继承自unittest.TestCase的测试用例类
    3、定义setUp和tearDown,在每个测试用例前后做一些辅助工作
    4、编写测试用例,名字以test开头。
    一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。调用assertEqual、assertRaises等断言方法判断结果和预期值是否相符。
    5、组装测试用例集

    组装测试用例集

    1. 方法1:main方法中调用unittest.main()启动测试,会自动执行本文件中test开头的用例。栗子如下
    //coding:utf-8
    import unittest
    import time
    from appium import webdriver
    
    class LoginTestCase(unittest.TestCase):
        @classmethod
        def setUpClass(cls):
            print("------------------setUp Test-----------------------")
            desired_caps = {}
            desired_caps['platformName'] = 'Android'
            desired_caps['platformVersion'] = '4.4.4'
            desired_caps['deviceName'] = 'Android Emulator'
            desired_caps['appPackage'] = 'com.xxx.activity'
            desired_caps['appActivity'] = '.AppStartActivity'
            desired_caps['unicodeKeyboard'] = True
            desired_caps['resetKeyboard'] = True
            cls.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
        @classmethod
        def tearDownClass(cls):
            cls.driver.close_app()
            cls.driver.quit()
            print("-------------------- Byebye ----------------------- ")
        def setUp(self):
            print("setup")
        def tearDown(self):
            print("teardown")
        def test1_log_in(self):
             xxxxx
        def test2_log_out(self):
             xxxxx
    if __name__ == '__name__': #运行时自动执行test开头的用例,执行顺序按照名字排序
    unittest.main()
    
    1. 方法2:testsuite组装测试用例【推荐】
      将待测测试用例加入到testSuite里面,调用unittest时会一个个执行。(可集合不同py文件中的testcase,也可加入不以test开头的testcase)
    def suite():
         suite = unittest.TestSuite
         suite.addTest(LoginTestCase("test_log_in"))
         suite.addTest(LoginTestCase("test_log_out"))
         return suite
    if __name__ == '__main__':
    unittest.main(defaultTest = 'suite')
    

    补充

    • 截屏并保存driver.save_screenshot("path.png")
    • 乱码&输入中文报错 #coding=utf-8,中文前面加u("中文")
    • 滑动切换:driver.swipe(start=75, starty=500, endx=75, endy=0, duration=800)
      设置during时间较长,否则会变成点击操作
    • 安卓默认停留时间>500ms为长按, self.driver.tap([(586, 355)], 200)
    • 异常处理
    try:
          self.driver.find_element_by_id('tv_subtopiccomments_content')
          result = 0
    except Exception as e:
          result = 1
    self.assertEqual(result,1,'delete topic sub comment failed')//若抛出异常就知道是断言失败
    
    • 命令行直接打开app的一个页面
    import os
    cmd = "adb shell am start -n com.xxx.activity/.topicDetailActivity -e id 1111"
    os.system(cmd)
    

    相关文章

      网友评论

          本文标题:Appium自动化测试(3)-用unittest编写测试用例

          本文链接:https://www.haomeiwen.com/subject/lrttgttx.html