zoukankan      html  css  js  c++  java
  • 数据驱动DDT(Data-Driven Tests):测试数据的参数化

    准备第三方库:

      首先安装ddt库,其次在脚本中引入ddt

      打开官网 https://pypi.org/project/ddt/

      from ddt import ddt,data,unpack

      

      @ddt

      class MookTestCase(unittest.TestCase):

    数据驱动的应用:

      1、使用元组存放被测试的数据,一个参数的情况

        @data(1,-3,2,0)

        def testcase(self,value):

        

      2、使用元组存放被测试的数据,多个参数的情况  

        @data((3,2),(4,3),(5,3))

        @unpack

        def testcase(self,value1,value2):

        

     DDT框架实例 

    #-*- coding: utf-8 -*-
    
    import os,time
    import logging
    import sys
    import unittest
    import HTMLTestRunner
    from appium import webdriver
    from ddt import ddt,data,unpack
    
    logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    logger = logging.getLogger(__name__)
    
    
    #统一使用utf-8格式
    default_encoding = 'utf-8'
    if sys.getdefaultencoding() != default_encoding:
        reload(sys)
        sys.setdefaultencoding(default_encoding)
    
    
    @ddt
    class MyTestCase(unittest.TestCase):
        def setUp(self):
        #字典
            ui = {
            'platformName': 'Android', # 平台名称
            'platformVersion': '5.1.1',  # 系统版本号
            # 'deviceName': 'emulator-5554',
            'deviceName': '127.0.0.1:62001',  # 设备名称。如果是真机,在'设置->关于手机->设备名称'里查看
            'appPackage': 'com.xiaobai.logindemo',  # apk的包名
            'appActivity': 'com.xiaobai.logindemo.LoginActivity',  # activity 名称
            }
    
    
            #Connect appium
            logger.info("连接appium")
            self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",ui)
            # os.system('adb kill-server')
            logger.info("连接appium2")
            # self.driver.implicitly_wait(8)
            print("---------------SetUp-------------
    ")
    
    
        @data(("csdn","123456",False),
                ("csdn","1234",True))
        @unpack
        def test_login(self,username,pwd,expectedresult):
            logger.info("请输入用户名")
            self.driver.find_element_by_id("com.xiaobai.logindemo:id/et_account").send_keys(username)
    
            logger.info("请输入密码")
            self.driver.find_element_by_id("com.xiaobai.logindemo:id/et_password").send_keys(pwd)
    
            logger.info("点击登录按钮")
            register = self.driver.find_element_by_id("com.xiaobai.logindemo:id/btn_login").click()
    
            try:
                if self.driver.find_element_by_id("com.xiaobai.logindemo:id/btn_login").is_displayed():
                    exist = True
            except Exception:
                exist = False
            self.assertEqual(exist,expectedresult)
            time.sleep(3)
            self.driver.quit()
    
        def tearDown(self):
            logger.info("结束")
            print("---------------------TearDown-----------
    ")
    
    
    if __name__ == '__main__':
        # suite = unittest.TestSuite()
        # suite.addTest(MyTestCase('test_login'))
        #
        # now = time.strftime("%Y-%M-%d-%H-%M-%S",time.localtime())
        # filename = ".ReportCase.html"
        # print('run version {}'.format(sys.version))
        # fp = open(now + filename,'wb')
        # runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u"自动化测试报告",description=u"TestCase Report")
        # runner.run(suite)
        #
        # fp.close()
        unittest.main()
    #对应的runner
    
    import app.testcase.unittestdemo
    import unittest
    
    # mysuite = unittest.TestSuite()
    # mysuite.addTest(app.testcase.loginUI.MyTestCase("test_login"))
    cases = unittest.TestLoader().loadTestsFromTestCase(app.testcase.unittestdemo.MyTestCase)
    mysuite = unittest.TestSuite([cases])
    # mysuite.addTest(app.testcase.loginUI.MyTestCase("test_login"))
    
    myrunner = unittest.TextTestRunner(verbosity=2)
    myrunner.run(mysuite)
  • 相关阅读:
    MySQL Unable to convert MySQL datetime value to System.DateTime 解决方案
    Zend 无限试用
    SQL 触发器
    C# 多线程示例
    JS 实现打印
    apache开启.htaccess
    MySQL 安装包下载教程
    js系列(10)js的运用(二)
    js系列(9)js的运用(一)
    js系列(8)简介
  • 原文地址:https://www.cnblogs.com/sasa-python/p/12889520.html
Copyright © 2011-2022 走看看