如何有多条用例的操作步骤类似的情况,我还能做哪些优化?下面脚本有两个测试用例,分别是1、用户名面错误;2、密码为空
文件结构:
conftest.py:
"""
时间:2021/8/5-22:05
文件:conftest.py.py
姓名:瓜牛强强
QQ:1689785398@qq.com
"""
import pytest
from selenium import webdriver
@pytest.fixture()
def driver():
"""打开浏览器和关闭浏览器"""
# 地址
url = "https://v4.ketangpai.com/User/login.html"
driver = webdriver.Chrome()
# 最大化,隐性等待
driver.maximize_window()
# 隐性等待
driver.implicitly_wait(10)
# 访问被测网址
driver.get(url)
print("以上步骤为前置条件")
yield driver
print("以下步骤为后置条件")
# 关闭浏览器
driver.quit()
"""
时间:2021/8/5-22:12
文件:test_login.py
姓名:瓜牛强强
QQ:1689785398@qq.com
"""
"""
登录的测试用例
使用的是pytest 框架
"""
import pytest
import time
from selenium.webdriver.common.keys import Keys
class TestLogin:
def test_login_username_error(self, driver):
"""测试登录功能--第1条测试用例--用户名、密码错误:
步骤:
1、访问登录界面
2、输入用户名和密码,回车
3、断言: 预期结果和实际结果比对
"""
# 测试数据统一管理
username = '1111111111'
password = '1234'
expected = '密码有效长度是6到30个字符'
# 定位用户名元素,输入用户名
username_el = driver.find_element('xpath', '//input[@name="account"]')
username_el.send_keys(username)
# 定位密码元素,输入密码
# 直接回车提交
password_el = driver.find_element('xpath', '//input[@name="pass"]')
password_el.send_keys(password)
# 回车提交
password_el.send_keys(Keys.ENTER)
time.sleep(5)
# 断言:在页面当中找到错误信息的元素,获取文本与实际结果对比。
error_ele = driver.find_element('xpath', '//p[@class="error-tips"]')
actual = error_ele.text
assert actual == expected
def test_login_password_None(self, driver):
"""测试登录功能--第2条测试用例--密码为空:
步骤:
1、访问登录界面
2、输入用户名和密码,回车
3、断言: 预期结果和实际结果比对
"""
# 测试数据统一管理
username = '1111111111'
password = ''
expected = '密码不能为空'
# 定位用户名元素,输入用户名
username_el = driver.find_element('xpath', '//input[@name="account"]')
username_el.send_keys(username)
# 定位密码元素,输入密码
# 直接回车提交
password_el = driver.find_element('xpath', '//input[@name="pass"]')
password_el.send_keys(password)
# 回车提交
password_el.send_keys(Keys.ENTER)
time.sleep(5)
# 断言:在页面当中找到错误信息的元素,获取文本与实际结果对比。
error_ele = driver.find_element('xpath', '//p[@class="error-tips"]')
actual = error_ele.text
assert actual == expected
if __name__ == '__main__':
pytest.main()
上面的测试用例看起来上面感觉?是不是感觉好多,可读性不好。因此,我们又可以做优化了,可以把登录相关步骤单独封装一个函数。
"""
时间:2021/8/5-22:12
文件:test_login.py
姓名:瓜牛强强
QQ:1689785398@qq.com
"""
"""
登录的测试用例
使用的是pytest 框架
"""
import pytest
import time
from selenium.webdriver.common.keys import Keys
def login(driver,username,password):
"""登录"""
# 定位用户名元素,输入用户名
username_el = driver.find_element('xpath', '//input[@name="account"]')
username_el.send_keys(username)
# 定位密码元素,输入密码
# 直接回车提交
password_el = driver.find_element('xpath', '//input[@name="pass"]')
password_el.send_keys(password)
# 回车提交
password_el.send_keys(Keys.ENTER)
time.sleep(5)
class TestLogin:
def test_login_username_error(self, driver):
"""测试登录功能--第1条测试用例--用户名、密码错误:
步骤:
1、访问登录界面
2、输入用户名和密码,回车
3、断言: 预期结果和实际结果比对
"""
# 测试数据统一管理
username = '1111111111'
password = '1234'
expected = '密码有效长度是6到30个字符'
# 调用登录函数
login(driver,username,password)
# 断言:在页面当中找到错误信息的元素,获取文本与实际结果对比。
error_ele = driver.find_element('xpath', '//p[@class="error-tips"]')
actual = error_ele.text
assert actual == expected
def test_login_password_None(self, driver):
"""测试登录功能--第2条测试用例--密码为空:
步骤:
1、访问登录界面
2、输入用户名和密码,回车
3、断言: 预期结果和实际结果比对
"""
# 测试数据统一管理
username = '1111111111'
password = ' '
expected = '密码不能为空'
# 调用登录函数
login(driver, username, password)
# 断言:在页面当中找到错误信息的元素,获取文本与实际结果对比。
error_ele = driver.find_element('xpath', '//p[@class="error-tips"]')
actual = error_ele.text
assert actual == expected
if __name__ == '__main__':
pytest.main()
是不是又感觉测试脚本的代码更简洁了
To be continue,点个关注,持续更新。。。