zoukankan      html  css  js  c++  java
  • web自动化测试框架 —数据驱动测试

    测试设计模式有3种,分别为:

    1、关键字驱动测试模式

      代码分层:业务逻辑、测试代码、处理数据

      难点:面向对象编程思想

    2、数据驱动测试模式

      测试数据与测试脚本分离

    3、行为驱动测试模式

      执行测试时,用自然语言描述的

      特点:别人调用不需要写代码,模糊开发、测试的界限

    实现数据驱动测试

    适用范围:可以用等价类边界值测试的功能

    优点:测试数据参数化

    代码如下:

    # 数据驱动测试(参数化)
    # 等价类边界值就可以用数据驱动
    # 针对海盗商城的注册功能
    from selenium import webdriver
    from ddt import ddt, data, unpack
    import unittest
    import time
    import csv
    
    # 读取csv文件中的测试数据
    def get_csv_data():
        file = open("data.csv", "r")
        content = csv.reader(file)
        s = []
        for info in content:
            s.append(info)
        return s
    
    
    @ddt
    class TestCaseDemo(unittest.TestCase):
    
        def setUp(self):
            # 打开浏览器
            self.driver = webdriver.Chrome()
    
        def tearDown(self):
            # 关闭浏览器
            self.driver.quit()
    
        @data(*get_csv_data())
        # *代表去一层(外层)包装,星号不是必须(需要去外层包装就用星号)
        @unpack
        # 解包,分解成5个数据
        def test01_demo(self, caseno, user, password, repassword, phone, email, result):
            # 打开注册页面
            self.driver.get("http://localhost/index.php?m=user&c=public&a=reg")
            # 输入用户名
            self.driver.find_element_by_name("username").send_keys(user)
            # 输入密码
            self.driver.find_element_by_name("password").send_keys(password)
            # 输入确认密码
            self.driver.find_element_by_name("userpassword2").send_keys(repassword)
            # 输入手机号
            self.driver.find_element_by_name("mobile_phone").send_keys(phone)
            # 输入邮箱
            self.driver.find_element_by_name("email").send_keys(email)
            # 点击注册
            self.driver.find_element_by_class_name("reg_btn").click()
            time.sleep(3)
            # 检查测试结果
            if self.driver.current_url == "http://localhost/index.php?m=user&c=index&a=index":
                print(caseno + "测试通过")
                testresult = caseno + "测试通过"
            # 异常结果验证
            elif self.driver.find_element_by_css_selector(".Validform_checktip.Validform_wrong").text == result:
                print(caseno + "测试通过")
                testresult = caseno + "测试通过"
            else:
                print(caseno + "测试失败")
                testresult = caseno + "测试失败"
    
            # 把测试结果写入文件中
            file = open("testresult01.csv", "a", newline="")
            writer = csv.writer(file)
            writer.writerow([testresult])
            file.close()
  • 相关阅读:
    1.33 (累积互素数)
    1.33 (过滤累积和 求区间内所有素数之和)
    1.32 (更高层次的抽象! 乘法与加法本来就是一回事)
    1.31 (另一种求圆周率的算法)
    1.30 (递归的sum变迭代)
    习题1.29 (积分方法的优化---simpson规则)
    1.3.1 (对过程的抽象)
    SICP习题 1.23(素数查找的去偶数优化)
    SICP习题 1.22(素数)
    pom.xml
  • 原文地址:https://www.cnblogs.com/String-song/p/12916906.html
Copyright © 2011-2022 走看看