一.文件夹、文件命名规范

1.page_element、page_handle、test_dir文件下基于功能模块新建二级文件夹,且一一对应;

  1. 范例:
  2. page_element
  3. --editor
  4. --home
  5. --template
  6. page_handle
  7. --editor
  8. --home
  9. --template
  10. test_dir
  11. --editor
  12. --home
  13. --template

2.二级文件下最多新建一级子文件夹,即三级文件夹下多个文件;

  1. 范例:
  2. page_element
  3. --editor
  4. editor_page.py
  5. XXX.py
  6. --home
  7. account_info_page.py
  8. yyy.py

3.pageelement中文件以:页面或者模块页面类型.py命名,
例如:

  1. 工作台页面:myapp_page.py;
  2. 工作台分享管理设置弹窗:myapp_manage_dialog.py

4.page_handle中文件以:页面或者模块_handle.py命名,
例如:

  1. 工作台页面:myapp_handle.py;
  2. 工作台分享管理设置弹窗:myapp_manage_handle.py;

4.testdir 文件夹中测试用例文件以:test模块_cases.py命名

  1. 例如:工作台的相关用例:test_myapp_cases.py

二.元素定位、元素操作封装类、方法命名规范

1.元素定位封装类、方法命名规范:基于一个页面=一个类,页面中的元素=类中的属性

1-1.类的命名规范:页面或者模块名称+页面类型;

  1. class MyappPage:
  2. """例如工作台页面"""
  3. pass
  4. class MyappManageDialog:
  5. """工作台分享管理设置弹窗"""
  6. pass

1-2.属性的命名规范:属性类型+元素类型;

  1. edit_btn = xxxx # 例如编辑按钮
  2. search_input = xxx # 例如搜索文本框

(ps:当页面元素特别多,属性命名可加上页面位置方向,例如编辑器上方的保存按钮:top_save_btn = xxx)

2.元素操作封装类、方法命名规范:基于一个页面=一个类,页面中的元素操作=类中的实例方法

2-1.类的命名规范:页面或者模块名称+Handle;

  1. class MyappHandle:
  2. """例如工作台页面"""
  3. pass

2-2.实例方法的命名规范:动作+具体元素;

  1. def click_edit_btn:
  2. """例如点击编辑按钮"""
  3. pass
  4. def input_search_text:
  5. """搜索框输入文本"""
  6. pass

三.用例集、用例名称命名规范

基于测试用例文件中,一个用例集=一个类,一个类的方法=一条用例

1.用例集命名规范:Test+页面某个功能;

  1. class TestTemplateSearch:
  2. """模板市场的模板搜索"""
  3. pass
  4. class TestTemplateCreation:
  5. """模板新建"""
  6. pass

2.测试用例命名规范:test_页面某个功能,

  1. def test_editor_create:
  2. """新建作品"""
  3. pass

四.测试用例编写规范

1.每个用例集必须要有所属模块和用例集名称;

装饰函数@pytest.mark.{“模块”}
装饰函数@allure.feature(“{用例集名称}”)

  1. @allure.feature("模板创建")
  2. @pytest.mark.template
  3. class TestTemplateCreate:
  4. pass

2.每个用例(方法)必须要有用例名称、用例步骤描述

装饰函数@allure.title(“xxxx”)
注释-→stpeds:1.xxx>2.yyyy>3.zzzz

  1. @allure.feature("编辑器功能")
  2. @pytest.mark.editor
  3. class TestEditorH5:
  4. @allure.title("保存发布h5作品")
  5. def test_h5_save_and_publish(self, browser):
  6. """steps:1.进入兔展工作台>2.点击编辑作品>3.点击保存作品>4.点击发布作品"""
  7. pass

五.其他

1.由于poium的新类 NewPageElement,无法支持动态定位一组元素,故需要把page_objects.py文件下第116行代码注释,PageElements类可支持定位一组元素
注释代码:

  1. # warnings.warn("use NewPageElement instead", DeprecationWarning, stacklevel=2)