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()
原文地址:https://www.cnblogs.com/String-song/p/12916906.html