test update

pull/208/head
Desuver 2025-05-22 14:18:30 +08:00
parent 5fa2951df7
commit 310e883d35
5 changed files with 91 additions and 81 deletions

View File

@ -15,13 +15,13 @@ ymlPath = path_prefix + 'static/config.yml'
# partial文件夹路径
partialPath = path_prefix + 'layout/partial/'
f = open(ymlPath, 'r', encoding='utf-8') # 以'UTF-8'格式打开YAML文件
cont = f.read() # 以文本形式读取YAML
f = open(ymlPath, 'r', encoding='utf-8')
cont = f.read()
yml = YAML.load(cont, Loader=YAML.FullLoader) # 加载YAML
with open(partialPath + 'header.html', 'r', encoding='utf-8') as f:
yml['header'] = f.read() # header内的文本会被直接添加到所有页面的head标签内
yml['header'] = f.read() # header内的文本会被直接添加到所有页面的head标签内
with open(partialPath + 'footer.html', 'r', encoding='utf-8') as f:
yml['footer'] = f.read() # footer内的文本会被直接添加到所有页面的最底部
yml['footer'] = f.read() # footer内的文本会被直接添加到所有页面的最底部

View File

@ -1,88 +1,89 @@
from selenium.webdriver.common.alert import Alert
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
# 配置测试环境
BASE_URL = "http://localhost:8000" # 替换为您的应用URL
# 对用户名不能为中文进行测试
def test_register_username_with_chinese(driver, URL):
try:
driver.get(URL + "/signup")
# 等待用户名输入框出现
username_elem = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'username'))
)
username_elem.send_keys("测试用户") # 输入中文用户名
# 等待密码输入框出现
password_elem = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'password'))
)
password_elem.send_keys("validPassword123") # 输入有效密码
# 等待确认密码输入框出现
password2_elem = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'password2'))
)
password2_elem.send_keys("validPassword123") # 输入有效确认密码
# 等待注册按钮出现并点击
signup_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, '//button[@onclick="signup()"]'))
)
signup_button.click()
# 等待警告框出现并接受
WebDriverWait(driver, 10).until(EC.alert_is_present())
alert = driver.switch_to.alert
alert_text = alert.text
print(f"警告文本: {alert_text}")
assert alert_text == "Chinese characters are not allowed in the user name." # 根据实际的警告文本进行断言
alert.accept()
except Exception as e:
print(f"发生错误: {e}")
raise
@pytest.fixture
def driver():
# 使用 Chrome 浏览器并自动管理驱动
options = webdriver.ChromeOptions()
options.add_argument("--headless") # 无头模式,不显示浏览器窗口
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
yield driver
driver.quit() # 测试结束后关闭浏览器
# 对注册时密码不能是中文进行测试
def test_register_password_with_chinese(driver, URL):
try:
driver.get(URL + "/signup")
# 测试用户名不能包含中文
def test_username_cannot_contain_chinese(driver):
# 打开注册页面
driver.get(f"{BASE_URL}/signup")
# 等待用户名输入框出现
username_elem = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'username'))
)
username_elem.send_keys("validUsername123") # 输入有效用户名
# 填写用户名(包含中文)
username = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "username"))
)
username.send_keys("测试用户")
# 等待密码输入框出现
password_elem = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'password'))
)
password_elem.send_keys("测试密码") # 输入中文密码
# 填写有效密码
password = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "password"))
)
password.send_keys("ValidPassword123!")
# 等待确认密码输入框出现
password2_elem = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'password2'))
)
password2_elem.send_keys("测试密码") # 输入中文确认密码
# 确认密码
confirm_password = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "password2"))
)
confirm_password.send_keys("ValidPassword123!")
# 等待注册按钮出现并点击
signup_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, '//button[@onclick="signup()"]'))
)
signup_button.click()
# 点击注册按钮
register_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, '//button[contains(text(), "注册")]'))
)
register_button.click()
# 等待警告框出现并接受
WebDriverWait(driver, 10).until(EC.alert_is_present())
alert = driver.switch_to.alert
alert_text = alert.text
print(f"警告文本: {alert_text}")
assert alert_text == "Chinese characters are not allowed in the password." # 根据实际的警告文本进行断言
alert.accept()
# 验证警告提示
alert = WebDriverWait(driver, 10).until(EC.alert_is_present())
assert "中文" in alert.text or "Chinese" in alert.text, "未显示用户名中文限制提示"
alert.accept()
except Exception as e:
print(f"发生错误: {e}")
raise
# 测试密码不能包含中文
def test_password_cannot_contain_chinese(driver):
# 打开注册页面
driver.get(f"{BASE_URL}/signup")
# 填写有效用户名
username = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "username"))
)
username.send_keys("validuser123")
# 填写密码(包含中文)
password = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "password"))
)
password.send_keys("测试密码")
# 确认密码(包含中文)
confirm_password = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "password2"))
)
confirm_password.send_keys("测试密码")
# 点击注册按钮
register_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, '//button[contains(text(), "注册")]'))
)
register_button.click()
# 验证警告提示
alert = WebDriverWait(driver, 10).until(EC.alert_is_present())
assert "中文" in alert.text or "Chinese" in alert.text, "未显示密码中文限制提示"
alert.accept()

View File

@ -7,8 +7,6 @@ from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from helper import signup
def has_punctuation(s):
return any(c in string.punctuation for c in s)

1
test.py Normal file
View File

@ -0,0 +1 @@
print("Hello World")

View File

@ -0,0 +1,10 @@
(.venv) PS D:\2025软件项目管理\spm_vocabulary\spm_vocabulary> pytest test_vocabulary.py
===================================================================== test session starts ======================================================================
platform win32 -- Python 3.12.4, pytest-8.3.5, pluggy-1.5.0
rootdir: D:\2025软件项目管理\spm_vocabulary\spm_vocabulary
collected 16 items
test_vocabulary.py ................ [100%]
====================================================================== 16 passed in 0.02s ======================================================================
(