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()
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步