# python_web_framework
这是一个关于python的WebUI自动化测试的项目,之前用的是unittest测试框架,现在改成pytest测试框架,Python+PageObject+Pytest
实现页面元素、页面对象及业务、测试数据分离
项目结构:说明
.
|-- assets
| `-- style.css
|-- cases --------------------- 测试用例模块
| |-- conftest.py
| |-- __init__.py
| |-- logincases --------------------- 测试模块1
| | |-- conftest.py
| | |-- __init__.py
| | `-- test_login.py
| `-- usercases --------------------- 测试模块2
| |-- conftest.py
| |-- __init__.py
| `-- test_user_add.py
|-- Common --------------------- 配置和功能函数
| |-- config
| | `-- config.ini --------------------- 配置文件, 日志、报告、截图的目录等
| |-- __init__.py
| |-- plugs --------------------- 功能函数
| | |-- basepage.py --------------------- 封装的 webdriver Api (后续可以自己添加,目前只是封装的少许)
| | |-- get_config.py --------------------- 获取配置文件方法
| | |-- get_log.py --------------------- 日志的配置方法
| | |-- __init__.py
|-- Locators --------------------- 测试页面定位
| |-- __init__.py
| |-- LoginLocators --------------------- 登录模块的页面对象定位
| | |-- __init__.py
| | |-- login_locators.py
| `-- UserLocators --------------------- 用户模块的页面对象定位
| |-- __init__.py
| `-- user_locators.py
|-- OutPuts --------------------- 输出
| |-- image --------------------- 截图
| |-- log --------------------- 日志
| `-- reports --------------------- 报告
| `-- report.html
|-- PageObjects ---------------------- 业务流程
| |-- IndexPage ---------------------- 主页模块的页面对象
| | |-- index_page.py
| | |-- __init__.py
| |-- __init__.py
| |-- LoginPage ---------------------- 登录模块的页面对象
| | |-- __init__.py
| | |-- login_page.py
| `-- UserPage ---------------------- 用户模块的页面对象
| |-- __init__.py
| `-- user_page.py
|-- README.md
`-- TestDatas ---------------------- 测试数据
|-- GobalDatas ---------------------- 全局的测试数据
| |-- gobal_datas.py
| |-- __init__.py
|-- __init__.py
|-- LoginDatas ---------------------- 登录模块的正常、异常测试数据
| |-- __init__.py
| |-- login_datas.py
`-- UserDatas ---------------------- 用户模块的正常、异常测试数据
|-- __init__.py
`-- user_add_datas.py
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以下是简单说明:
case: pytest的参数化 fixture的使用 conftest全局和本地的配置
Cases/conftest:测试类的前置和后置,单个测试用例的前置和后置
@pytest.fixture(scope='session')
def project_session_start():
logger.info("==========开始 XX项目 执行测试===========")
global driver
driver = webdriver.Chrome()
driver.maximize_window()
yield driver
driver.quit()
logger.info("==========结束 XX项目 测试===========")
@pytest.fixture(scope='module')
def project_module_start():
logger.info("==========开始 XX模块 执行测试===========")
global driver
driver = webdriver.Chrome()
driver.maximize_window()
yield driver
driver.quit()
logger.info("==========结束 XX模块 测试===========")
-------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------
测试用例:参数的正常和异常用例
pytest.mark.usefixtures('start_session')
@pytest.mark.usefixtures('refresh_page')
class TestUserAdd:
@pytest.mark.smoke
def test_add_user(self, start_session):
logger.info(" 执行 {0} 测试用例 ".format(sys._getframe().f_code.co_name))
logger.info('正常新增用户测试用例')
start_session[1].add_user(UAD.success_data['username'], UAD.success_data['password'],
UAD.success_data['email'],
UAD.success_data['phone'])
logger.info("期望值:{0}".format(UAD.success_data['Msg']))
logger.info("实际值:{0}".format(start_session[1].get_add_result_msg()))
try:
assert start_session[1].get_add_result_msg() == UAD.success_data['Msg']
logger.info(" 结束执行 {0} 测试用例, 测试结果 --- PASS ".format(sys._getframe().f_code.co_name))
start_session[1].save_pictuer("{0}-正常截图".format(UAD.success_data['name']))
except:
logger.info(" 结束执行 {0} 测试用例, 测试结果 --- False ".format(sys._getframe().f_code.co_name))
start_session[1].save_pictuer("{0}-异常截图".format(UAD.success_data['name']))
raise
@pytest.mark.parametrize('data', UAD.error_usernameFormat_data)
def test_add_usernameFormat_error(self, data, start_session):
print(" 执行 {0} 测试用例 ".format(sys._getframe().f_code.co_name))
logger.info(" 异常测试用例:{0} ".format(data['name']))
start_session[1].add_user(data['username'], data['password'], data['email'], data['phone'])
logger.info("期望值:{0}".format(data['Msg']))
logger.info("实际值:{0}".format(start_session[1].get_add_result_msg()))
try:
assert start_session[1].get_add_result_msg() == data['Msg']
logger.info(" 结束执行 {0} 测试用例, 测试结果 --- PASS ".format(sys._getframe().f_code.co_name))
start_session[1].save_pictuer("{0}-正常截图".format(data['name']))
except:
logger.info(" 结束执行 {0} 测试用例, 测试结果 --- False ".format(sys._getframe().f_code.co_name))
start_session[1].save_pictuer("{0}-异常截图".format
没有合适的资源?快使用搜索试试~ 我知道了~
这是一个关于python的WebUI自动化测试的项目
共56个文件
py:34个
png:10个
pyc:5个
需积分: 0 1 下载量 97 浏览量
2024-01-17
21:10:27
上传
评论
收藏 5.61MB ZIP 举报
温馨提示
python项目
资源推荐
资源详情
资源评论
收起资源包目录
这是一个关于python的WebUI自动化测试的项目,之前用的是unittest测试框架,现在改成pytest测试框架,Python+PageObject+Pytest.zip (56个子文件)
557sdsada232323sd
Cases
__init__.py 0B
usercases
__init__.py 0B
test_user_add.py 4KB
conftest.py 2KB
conftest.py 1KB
logincases
__init__.py 0B
test_login.py 4KB
conftest.py 2KB
assets
style.css 2KB
PageObjects
__init__.py 0B
LoginPage
__init__.py 0B
login_page.py 652B
IndexPage
__init__.py 0B
index_page.py 560B
UserPage
__init__.py 0B
user_page.py 884B
OutPuts
image
登录功能-异常测试-用户名不存在-正常截图_2019-10-26_20_26_04.png 1.32MB
新增用户功能-异常测试-用户已存在-正常截图_2019-10-26_20_26_31.png 67KB
登录功能-异常测试-密码为空-正常截图_2019-10-26_20_26_09.png 1.32MB
新增用户功能-异常测试-用户已存在-正常截图_2019-10-26_20_26_41.png 67KB
新增用户功能-异常测试-用户名为空-正常截图_2019-10-26_20_26_46.png 67KB
新增用户功能-异常测试-用户名为空-正常截图_2019-10-26_20_26_36.png 67KB
登录功能-异常测试-密码错误-正常截图_2019-10-26_20_26_13.png 1.32MB
登录功能-正常测试-正常截图_2019-10-26_20_26_18.png 21KB
新增用户功能-正常测试-正常截图_2019-10-26_20_26_26.png 67KB
登录功能-异常测试-用户名为空-正常截图_2019-10-26_20_25_59.png 1.32MB
log
2019-10-29.log 51KB
.idea
workspace.xml 40KB
requirements.txt 32B
.gitignore 4KB
Locators
__init__.py 0B
IndexLocators
__init__.py 0B
index_locators.py 120B
LoginLocators
__init__.py 0B
login_locators.py 335B
UserLocators
__init__.py 0B
user_locators.py 1KB
README.md 12KB
Common
__init__.py 0B
plugs
__init__.py 0B
get_log.py 2KB
basepage.py 4KB
get_config.py 2KB
__pycache__
basepage.cpython-36.pyc 4KB
get_log.cpython-36.pyc 2KB
get_config.cpython-36.pyc 2KB
__init__.cpython-36.pyc 159B
__pycache__
__init__.cpython-36.pyc 153B
config
config.ini 178B
TestDatas
__init__.py 0B
GobalDatas
__init__.py 0B
gobal_datas.py 96B
LoginDatas
__init__.py 0B
login_datas.py 765B
UserDatas
__init__.py 0B
user_add_datas.py 1KB
共 56 条
- 1
资源评论
zero2100
- 粉丝: 163
- 资源: 2464
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 整卷预览.mhtml
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见的
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见的
- 基于Javascript的结婚请帖设计源码 - Invitation
- mysql语句大全及用法
- mysql语句大全及用法
- mysql语句大全及用法
- MySQL是一种广泛使用的开源关系型数据库管理系统
- MySQL是一种广泛使用的开源关系型数据库管理系统
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功