适合软件测试的练手项目
文章目录
- 登录用例
- 自动化测试
前言
登录需求分析:
测试账号:13800138006密码:123456
手机号11位
密码6-16位大小写字母数字的组合
一、登录用例
二、自动化测试
代码目录
base.py文件
#导包
import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
class Base:
# 初始化
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.get('http://www.testingedu.com.cn:8000/Home/Index/index.html')
# 查找元素方法
def base_find_element(self, loc, t=30, p=0.5):
return WebDriverWait(self.driver, timeout=t, poll_frequency=p).until(lambda x: x.find_element(*loc))
# 点击方法
def base_click(self, loc):
self.base_find_element(loc).click()
# 输入方法
def base_input(self, loc, value):
el = self.base_find_element(loc)
# 清空
el.clear()
# 输入
el.send_keys(value)
# 获取文本
def base_get_text(self, loc):
return self.base_find_element(loc).text
# 截图
def base_image(self):
self.driver.get_screenshot_as_file("../image/%s.png" % (time.strftime("%Y_%m_%d %H_%M_%S")))
page_login.py文件
from login import page
from login.base.base import Base
class Pagelogin(Base):
# 点击登录链接
def page_click_login_link(self):
self.base_click(page.login_link)
# 输入用户名
def page_input_username(self, user):
self.base_input(page.login_username, user)
# 输入密码
def page_input_password(self, pas):
self.base_input(page.login_pwd, pas)
# 输入验收码
def page_input_verify_code(self, code):
self.base_input(page.login_verify_code, code)
# 点击登录按钮
def page_click_login_btn(self):
self.base_click(page.login_btn)
# 点击提示框的确认按键
def page_click_OK(self):
self.base_click(page.login_ok)
# 获取异常信息
def page_get_error_info(self):
return self.base_get_text(page.login_err_info)
# 截图
def page_get_img(self):
self.base_image()
# 组合业务方法
def page_login(self, user, pas, code):
self.page_input_username(user)
self.page_input_password(pas)
self.page_input_verify_code(code)
self.page_click_login_btn()
self.page_click_OK()
page文件夹中__init__配置文件
from selenium.webdriver.common.by import By
"""以下为登录页面元素配置信息"""
# 登录链接
login_link = By.PARTIAL_LINK_TEXT, "登录"
# 用户名
login_username = By.NAME, "username"
# 密码
login_pwd = By.NAME, "password"
# 验证码
login_verify_code = By.NAME, "verify_code"
# 登录按钮
login_btn = By.NAME, "sbtbutton"
# 获取异常文本信息
login_err_info = By.CLASS_NAME, "layui-layer-content"
#提示框确认按钮
login_ok=By.CSS_SELECTOR, ".layui-layer-btn0"
# 点击异常提示框 按钮
#login_err_btn_ok = By.CSS_SELECTOR, ".layui-layer-btn0"
test_login.py测试文件
# 导包
import unittest
from login.page.page_login import Pagelogin
from parameterized import parameterized
def get_data():
return [("1380013800", "123456", "1234", "账号格式不匹配!"),
("", "123456", "1234", "用户名不能为空!"),
("1380013800a", "123456", "1234", "账号格式不匹配!"),
("13800138888 ", "123456", "1234", "账号不存在!"),
("13800138006", "123", "1234", "密码错误!"),
("13800138006", "123456891012345678910", "1234", "密码错误!"),
("1380013800!", "123456", "1234", "账号格式不匹配!"),
("13800138006", "", "1234", "密码不能为空!")]
class TestLogin(unittest.TestCase):
login = None
@classmethod
def setUpClass(cls) -> None:
# 实例化,获取页面对象
cls.login = Pagelogin()
# 点击登录
cls.login.page_click_login_link()
@classmethod
def tearDownClass(cls) -> None:
cls.login.driver.quit()
# 登录测试方法
@parameterized.expand(get_data())
def test_login(self, username, password, code, expect):
self.login.page_login(username, password, code)
# 获取异常信息
msg = self.login.page_get_error_info()
print(msg)
try:
self.assertEqual(msg, expect)
except AssertionError:
self.login.page_get_img()
运行视频
DSTest – test_login.py