• UnitTest与数据驱动及测试框架设计模式


    UnitTest

    通过直接导入UnitTest包即可实现: import unittest

    是python库自带的自动化测试框架

    主要用于管理测试用例和实现数据驱动

    在nuittest 中所有的测试用例 都是基于 test_ 基于前缀来实现的 如果不写的话 那么它只是一个普通的函数

    unitest 会自动识别执行 test_ 为测试用例

    简单小实例  引入公代码关键字驱动脚本 https://www.cnblogs.com/sunzzc/p/13375537.html :

    import unittest
    from web_ui.my_keywords import TestKeyWords
    import time

    class Test_For_sun(unittest.TestCase):

    # 前置条件 每条测试用例运行之前执行
    def setUp(self):
    print('执行前')


    # 后置条件 每条测试用例运行之后执行
    def tearDown(self):
    print('执行后')

    # 测试用例1
    def test_1(self):

    # 对类传入 url 已经浏览器
    sr = TestKeyWords('http://www.baidu.com', 'chrome')

    # 传入 定位方法 元素属性 已经输入内容
    sr.inupt_text('id', 'kw', '老祝头')
    # 点击方法
    sr.click_element('id', 'su')
    time.sleep(2)

    # 测试用例2
    def test_2(self):
    sr = TestKeyWords('http://www.baidu.com', 'chrome')
    sr.inupt_text('id', 'kw', '老祝头之夜的钢琴曲第五篇')
    time.sleep(2)
    sr.click_element('id', 'su')


    if __name__ == '__main__':
    unittest.main()

    前置条件 SetUp 进行框架优化

    import unittest
    from web_ui.my_keywords import TestKeyWords
    import time

    class Test_For_sun(unittest.TestCase):

    # 前置条件 每条测试用例运行之前执行
    def setUp(self):
         print('执行前进行实例化 url')
    self.sr = TestKeyWords('http://www.baidu.com', 'chrome')


    # 后置条件 每条测试用例运行之后执行
    def tearDown(self):
    print('执行后释放资源')
    self.sr.quit_browser()

    def test_1(self):
    self.sr.inupt_text('id', 'kw', '老祝头')
    self.sr.click_element('id', 'su')
    time.sleep(2)

    def test_2(self):

    self.sr.inupt_text('id', 'kw', '老祝头之夜的钢琴曲第五篇')
    time.sleep(2)
    self.sr.click_element('id', 'su')

    if __name__ == '__main__':
    unittest.main()

    quit与close的区别:

    quit 是关闭浏览器,并且关闭ChromeDriver进程

    close 是关闭当前的标签页不会关闭进程

    数据驱动:

    将代码与数据进行分离,单纯由数据组成文件,再由文件来驱动关键字,最终实际整个自动化的流程

    读取到数据,基于固定格式的数据内容进行拼接 拼接后的内容作为关键字所需要的参数 进行传入,从而执行对应

    的关键字,再将结果与预期结果进行对比,从而获得单条测试用例是否通过的结果

    下载包 ddt数据驱动

     

    如果传入两个不同参数 ddt 会以list形式传递 如果不导入unpack解包的话 会自动默认集合里面是一个整体 所以会报错

    所以要unpack 进行对集合二次分解 即可解决

    示例:

    import unittest
    from web_ui.my_keywords import TestKeyWords
    import time
    # 导入数据驱动包 引用data传参
    from ddt import ddt,data,unpack


    # ddt 数据驱动的测试模块 用装饰器的模式来实现
    @ddt()
    class Test_For_sun(unittest.TestCase):

    def setUp(self):
    self.sr = TestKeyWords('http://www.baidu.com', 'chrome')

    def tearDown(self):
    self.sr.quit_browser()

    # 引用data 对测试用例的传参 传接函数形参
    @data(['id','老祝头'],['id','老祝头之夜的钢琴曲第五篇'])
    # unpack 进行unittest 修复bug
    @unpack
    def test_1(self,locator,input_value):
    self.sr.inupt_text(locator, 'kw', input_value)
    self.sr.click_element('id', 'su')
    time.sleep(2)

    if __name__ == '__main__':
    unittest.main()
  • 相关阅读:
    vb教程图文并茂
    一个文本框的andriod教程
    5月18日,完成导入数据,但是从命令行显示数据乱码,程序已经正常工作
    android 文件读写权限的设定
    raw目录的位置是D:android_projectsqrscanappsrcmain es aw
    一个在raw里面放着数据库文件的网上例子
    P1446 [HNOI2008]Cards [Burnside引理]
    UVA11255 Necklace [Polya定理]
    Polya 定理入门[Burnside引理,Polya定理,欧拉函数]
    P2831 愤怒的小鸟 [状压dp/模拟退火]
  • 原文地址:https://www.cnblogs.com/sunzzc/p/13376161.html
Copyright © 2020-2023  润新知