一.文件夹、文件命名规范
1.page_element、page_handle、test_dir文件下基于功能模块新建二级文件夹,且一一对应;
范例:
page_element
--editor
--home
--template
page_handle
--editor
--home
--template
test_dir
--editor
--home
--template
2.二级文件下最多新建一级子文件夹,即三级文件夹下多个文件;
范例:
page_element
--editor
editor_page.py
XXX.py
--home
account_info_page.py
yyy.py
3.pageelement中文件以:页面或者模块页面类型.py命名,
例如:
工作台页面:myapp_page.py;
工作台分享管理设置弹窗:myapp_manage_dialog.py;
4.page_handle中文件以:页面或者模块_handle.py命名,
例如:
工作台页面:myapp_handle.py;
工作台分享管理设置弹窗:myapp_manage_handle.py;
4.testdir 文件夹中测试用例文件以:test模块_cases.py命名
例如:工作台的相关用例:test_myapp_cases.py
二.元素定位、元素操作封装类、方法命名规范
1.元素定位封装类、方法命名规范:基于一个页面=一个类,页面中的元素=类中的属性
1-1.类的命名规范:页面或者模块名称+页面类型;
class MyappPage:
"""例如工作台页面"""
pass
class MyappManageDialog:
"""工作台分享管理设置弹窗"""
pass
1-2.属性的命名规范:属性类型+元素类型;
edit_btn = xxxx # 例如编辑按钮
search_input = xxx # 例如搜索文本框
(ps:当页面元素特别多,属性命名可加上页面位置方向,例如编辑器上方的保存按钮:top_save_btn = xxx)
2.元素操作封装类、方法命名规范:基于一个页面=一个类,页面中的元素操作=类中的实例方法
2-1.类的命名规范:页面或者模块名称+Handle;
class MyappHandle:
"""例如工作台页面"""
pass
2-2.实例方法的命名规范:动作+具体元素;
def click_edit_btn:
"""例如点击编辑按钮"""
pass
def input_search_text:
"""搜索框输入文本"""
pass
三.用例集、用例名称命名规范
基于测试用例文件中,一个用例集=一个类,一个类的方法=一条用例
1.用例集命名规范:Test+页面某个功能;
class TestTemplateSearch:
"""模板市场的模板搜索"""
pass
class TestTemplateCreation:
"""模板新建"""
pass
2.测试用例命名规范:test_页面某个功能,
def test_editor_create:
"""新建作品"""
pass
四.测试用例编写规范
1.每个用例集必须要有所属模块和用例集名称;
装饰函数@pytest.mark.{“模块”}
装饰函数@allure.feature(“{用例集名称}”)
@allure.feature("模板创建")
@pytest.mark.template
class TestTemplateCreate:
pass
2.每个用例(方法)必须要有用例名称、用例步骤描述
装饰函数@allure.title(“xxxx”)
注释-→stpeds:1.xxx>2.yyyy>3.zzzz
@allure.feature("编辑器功能")
@pytest.mark.editor
class TestEditorH5:
@allure.title("保存发布h5作品")
def test_h5_save_and_publish(self, browser):
"""steps:1.进入兔展工作台>2.点击编辑作品>3.点击保存作品>4.点击发布作品"""
pass
五.其他
1.由于poium的新类 NewPageElement,无法支持动态定位一组元素,故需要把page_objects.py文件下第116行代码注释,PageElements类可支持定位一组元素
注释代码:
# warnings.warn("use NewPageElement instead", DeprecationWarning, stacklevel=2)