在 GBase 8a GCDW 应用中,角色创建是一个至关重要的功能,它关乎用户权限的管理和安全性。通过 Selenium WebDriver,我们可以模拟用户在网页上的操作,从而实现角色创建功能的自动化测试。
使用的技术栈
Python:作为自动化脚本的编写语言,它简洁优雅,适合快速开发。
Selenium:一个强大的自动化测试框架,用于执行浏览器操作。
自动化测试用例步骤
打开浏览器并访问角色创建页面:
使用 Selenium 打开浏览器并导航到角色创建的 URL。
输入角色名称和描述:
模拟用户在输入框中输入角色名称及角色描述。
选择权限:
如果角色创建涉及权限选择,自动勾选所需的权限选项。
提交角色创建表单:
点击提交按钮,提交表单。
验证角色是否创建成功:
检查页面上是否显示成功创建的消息,或在角色列表中确认新角色的存在。
以下是一个简单的 Python + Selenium 自动化用例示例:
# -*- coding: utf-8 -*-
from time import sleep
import config
import pytest
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from toolbox.sql_client import conn_sql
def start():
"""
用例执行前需要做的处理
"""
db = conn_sql()
cur = db.cursor()
try:
sql1 = "show roles"
cur.execute(sql1)
results = cur.fetchall()
sql2 = "DROP ROLE zztest"
for result in results:
if 'zztest' in result:
cur.execute(sql2)
db.commit()
except Exception as e:
print(e)
db.rollback()
cur.close()
db.close()
print("setup方法")
def end():
"""
用例执行后需要做的处理
"""
db = conn_sql()
cursor = db.cursor()
sql1 = "DROP ROLE 'zztest'"
try:
cursor.execute(sql1)
db.commit()
except Exception as e:
print(e)
db.rollback()
cursor.close()
db.close()
print("teardown方法")
@pytest.mark.mark_01
@pytest.mark.skipif(condition=config.is_run("test_01_roles_create_success"), reason='用例下线')
def test_01_roles_create_success():
# 调用通用模块登陆方法
driver = config.DRIVER
# 进入账户-角色模块
WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.LINK_TEXT, "Account"))).click()
sleep(1)
driver.find_element(By.XPATH, "//li/span[contains(text(),'Roles')]").click()
sleep(1)
# 新建角色,填写信息后点击完成
driver.find_element(By.XPATH, "//button/span[contains(text(),'Create')]").click()
driver.find_element(By.XPATH, "//div[@aria-label='Create Role']//form/div[1]//input").send_keys('zztest')
driver.find_element(By.XPATH, "//div[@aria-label='Create Role']//form/div[2]//input").click()
sleep(1)
driver.find_element(By.XPATH, "//li/span[contains(text(),'accountadmin')]").click()
driver.find_element(By.XPATH, "//div[@aria-label='Create Role']//form/div[3]//input").send_keys('zztest')
driver.find_element(By.XPATH, "//div[@aria-label='Create Role']//span[contains(text(),'Finish')]").click()
WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, "//button/span[contains(text(),'Create')]")))
# 等待后台缓一会
sleep(3)
# 调用通用模块调用数据库连接
db = conn_sql()
# 创建游标
cur = db.cursor()
count = 0
# 尝试数据库语句
try:
sql = 'show roles'
cur.execute(sql)
db.commit()
results = cur.fetchall()
print(results)
for result in results:
if 'zztest' in result:
count += 1
# 抛出异常
except Exception as e:
print(e)
db.rollback()
# 关闭游标和数据库
cur.close()
db.close()
# 断言
assert count == 1, "角色创建失败"
print("角色创建成功")
sleep(1)
1万+

被折叠的 条评论
为什么被折叠?



