作者 dengyuting

增加测试用例

正在显示 30 个修改的文件 包含 199 行增加809 行删除
name: 查看明细
base_url: ${ENV(base_url)}
verify: False
variables:
currtime: ${make_time()}
uuid: ${make_uuid()}
access_token: ${get_task_accesstoken()}
sign: ${make_sign($currtime, $uuid, $access_token)}
action: 0
timeStart: 123456
timeEnd: 78956
request:
headers:
Content-Type: application/json;charset=utf-8
User-Agent: okhttp/3.12.3
X-MMM-AccessToken: $access_token
X-MMM-AppName: com.mmm.ability
X-MMM-AppProject: ability
X-MMM-DeviceType: '0'
X-MMM-Sign: $sign
X-MMM-Timestamp: $currtime
X-MMM-Uuid: $uuid
X-MMM-Version: 1.0.0
json:
pageIndex: 0
pageSize: 20
action: $action
timeStart: $timeStart
timeEnd: $timeEnd
method: POST
url: /v1/task/moneyDetail
validate:
- eq:
- content.code
- 0
\ No newline at end of file
... ...
name: 编辑素币
base_url: ${ENV(base_manager_url)}
verify: False
variables:
userId: 3284714710070272
reason: 编辑素币的理由
amount: 5
editType: 1
request:
headers:
Content-Type: application/json; charset=UTF-8
Authorization: Bearer ${get_task_manager_accesstoken()}
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36
X-Requested-With: XMLHttpRequest
json:
userId: $userId
reason: $reason
amount: $amount
editType: $editType
method: POST
url: /currency/record
validate:
- eq:
- content.code
- 0
\ No newline at end of file
... ...
config:
name: ME028-通过管理后台增加素币-当前素币增加、贡献值不变
# base_url: ${ENV(base_url)}
teststeps:
- name: $phone 登录系统
variables:
phone: ${ENV(phone1)}
testcase: testcases/common/COM001_task_login_testcases.yml
- name: 第一次查看当前素币和贡献值
api: api/app_api/taskStatistics_api/taskStatistics_api.yml
extract:
- suMoney: content.data.taskMsg.suMoney
- winShares: content.data.taskMsg.winShares
- name: 通过管理后台增加素币
variables:
userId: 3284714710070272
reason: 增加素币的理由
amount: 5
editType: 1
testcase: testcases/common/manager/COM006_manager_suMoney.yml
- name: $phone 登录系统
variables:
phone: ${ENV(phone1)}
testcase: testcases/common/COM001_task_login_testcases.yml
- name: 第二次查看当前素币与贡献值
api: api/app_api/taskStatistics_api/taskStatistics_api.yml
validate:
- eq:
- content.data.taskMsg.suMoney
- ${add($suMoney,5)}
- eq:
- content.data.taskMsg.winShares
- ${add($winShares,0)}
... ...
config:
name: ME029-通过管理后台减少素币-当前素币减少、贡献值不变
# base_url: ${ENV(base_url)}
teststeps:
- name: $phone 登录系统
variables:
phone: ${ENV(phone1)}
testcase: testcases/common/COM001_task_login_testcases.yml
- name: 第一次查看当前素币和贡献值
api: api/app_api/taskStatistics_api/taskStatistics_api.yml
extract:
- suMoney: content.data.taskMsg.suMoney
- winShares: content.data.taskMsg.winShares
- name: 通过管理后台增加素币
variables:
userId: 3284714710070272
reason: 减少素币的理由
amount: 5
editType: 2
testcase: testcases/common/manager/COM006_manager_suMoney.yml
- name: $phone 登录系统
variables:
phone: ${ENV(phone1)}
testcase: testcases/common/COM001_task_login_testcases.yml
- name: 第二次查看当前素币与贡献值
api: api/app_api/taskStatistics_api/taskStatistics_api.yml
validate:
- eq:
- content.data.taskMsg.suMoney
- ${add($suMoney,-5)}
- eq:
- content.data.taskMsg.winShares
- ${add($winShares,0)}
... ...
config:
name: ME030-通过管理后台兑换素币-当前素币减少、贡献值不变
# base_url: ${ENV(base_url)}
teststeps:
- name: $phone 登录系统
variables:
phone: ${ENV(phone1)}
testcase: testcases/common/COM001_task_login_testcases.yml
- name: 第一次查看当前素币和贡献值
api: api/app_api/taskStatistics_api/taskStatistics_api.yml
extract:
- suMoney: content.data.taskMsg.suMoney
- winShares: content.data.taskMsg.winShares
- name: 通过管理后台增加素币
variables:
userId: 3284714710070272
reason: 兑换素币的理由
amount: 5
editType: 3
testcase: testcases/common/manager/COM006_manager_suMoney.yml
- name: $phone 登录系统
variables:
phone: ${ENV(phone1)}
testcase: testcases/common/COM001_task_login_testcases.yml
- name: 第二次查看当前素币与贡献值
api: api/app_api/taskStatistics_api/taskStatistics_api.yml
validate:
- eq:
- content.data.taskMsg.suMoney
- ${add($suMoney,-5)}
- eq:
- content.data.taskMsg.winShares
- ${add($winShares,0)}
... ...
config:
name: 用户新增抢单任务
teststeps:
- name: 提问问题-审核问题-获取资源
testcase: testcases/permission/ques_pf_permission/QX001_pf_permission.yml
- name: 登录系统
variables:
phone: ${ENV(wpftwphone)}
testcase: testcases/common/COM002_m_login_testcases.yml
- name: 引用资源
api: api/m_api/task_resource_api.yml
teardown_hooks:
- ${teardown_hook_get_resource_id($response)}
- ${teardown_hook_get_resource_title($response)}
- ${teardown_hook_get_resource_content($response)}
varidate:
validate:
- eq:
- content.msg
- ok
- name: 保存任务
api: api/m_api/loot/loot_update_0_false_api.yml
teardown_hooks:
- ${teardown_hook_get_loot_task_id($response)}
varidate:
validate:
- eq:
- content.msg
- ok
config:
name: 用户新增抢单任务-公司重要悬赏
teststeps:
- name: 提问问题-审核问题-获取资源
testcase: testcases/permission/ques_pf_permission/QX001_pf_permission.yml
- name: 登录系统
variables:
phone: ${ENV(wpftwphone)}
testcase: testcases/common/COM002_m_login_testcases.yml
#
- name: 引用资源
api: api/m_api/task_resource_api.yml
teardown_hooks:
- ${teardown_hook_get_resource_id($response)}
- ${teardown_hook_get_resource_title($response)}
- ${teardown_hook_get_resource_content($response)}
varidate:
validate:
- eq:
- content.msg
- ok
#
- name: 保存任务
api: api/m_api/loot/loot_update_true_api.yml
teardown_hooks:
- ${teardown_hook_get_loot_task_id($response)}
varidate:
validate:
- eq:
- content.msg
- ok
- name: 发布任务
api: api/m_api/loot/loot_open_api.yml
varidate:
validate:
- eq:
- content.msg
- ok
\ No newline at end of file
config:
name: 用户新增竞标任务
teststeps:
- name: 提问问题-审核问题-获取资源
testcase: testcases/permission/ques_pf_permission/QX001_pf_permission.yml
- name: 登录系统
variables:
phone: ${ENV(wpftwphone)}
testcase: testcases/common/COM002_m_login_testcases.yml
- name: 引用资源
api: api/m_api/task_resource_api.yml
teardown_hooks:
- ${teardown_hook_get_resource_id($response)}
- ${teardown_hook_get_resource_title($response)}
- ${teardown_hook_get_resource_content($response)}
varidate:
validate:
- eq:
- content.msg
- ok
- name: 保存任务
api: api/m_api/bid/bid_update_api.yml
teardown_hooks:
- ${teardown_hook_get_bid_task_id($response)}
varidate:
validate:
- eq:
- content.msg
- ok
- name: 发布任务
api: api/m_api/bid/bid_open_api.yml
varidate:
validate:
- eq:
- content.msg
- ok
\ No newline at end of file
config:
name: 用户新增指派任务
teststeps:
- name: 提问问题-审核问题-获取资源
testcase: testcases/permission/ques_pf_permission/QX001_pf_permission.yml
- name: 登录系统
variables:
phone: ${ENV(wpftwphone)}
testcase: testcases/common/COM002_m_login_testcases.yml
- name: 引用资源
api: api/m_api/task_resource_api.yml
teardown_hooks:
- ${teardown_hook_get_resource_id($response)}
- ${teardown_hook_get_resource_title($response)}
- ${teardown_hook_get_resource_content($response)}
varidate:
validate:
- eq:
- content.msg
- ok
- name: 保存任务
api: api/m_api/appoint/appoint_update_api.yml
teardown_hooks:
- ${teardown_hook_get_bid_task_id($response)}
varidate:
validate:
- eq:
- content.msg
- ok
config:
name: 用户新增抢单任务
name: 编辑素币
variables:
phone: ${ENV(adminphone)}
teststeps:
- name: $phone 登录系统
testcase: testcases/common/COM001_task_login_testcases.yml
testcase: testcases/common/COM002_m_login_testcases.yml
- name: 新增抢单任务
api: api/app_api/task_api/taskPublish_api.yml
varidate:
- name: 编辑素币
variables:
userId: 3284714710070272
reason: 编辑素币的理由
amount: 5
editType: 1
api: api/m_api/currency/currency_record_api.yml
validate:
- eq:
- content.msg
- ok
... ...
config:
name: 抢单任务状态验证-待发布
teststeps:
- name: 提问问题-审核问题-获取资源
testcase: testcases/permission/ques_pf_permission/QX001_pf_permission.yml
- name: 登录系统
variables:
username: ${ENV(wpftwphone)}
testcase: testcases/common/COM002_m_login_testcases.yml
- name: 引用资源
api: api/m_api/task_resource_api.yml
teardown_hooks:
- ${teardown_hook_get_resource_id($response)}
- ${teardown_hook_get_resource_title($response)}
- ${teardown_hook_get_resource_content($response)}
varidate:
validate:
- eq:
- content.msg
- ok
- name: 保存任务
api: api/m_api/loot/loot_update_false_api.yml
teardown_hooks:
- ${teardown_hook_get_loot_task_id($response)}
varidate:
validate:
- eq:
- content.msg
- ok
- name: 查看详情
api: api/m_api/loot/loot_detail_api.yml
variables:
status: ${get_task_status_1_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 抢单任务状态验证-已发布,待领取
teststeps:
- name: 抢单任务状态验证-待发布
testcase: testcases/common/COM007_loot_update_status_1_testcase.yml
- name: 发布任务
api: api/m_api/loot/loot_open_api.yml
varidate:
validate:
- eq:
- content.msg
- ok
- name: 查看详情
api: api/m_api/loot/loot_detail_api.yml
variables:
status: ${get_task_status_2_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 抢单任务状态验证-已领取,待确认
teststeps:
- name: 抢单任务状态验证-已发布,待领取
testcase: testcases/common/COM008_loot_open_status_2_testcase.yml
- name: app端点击立即抢单
testcase: testcases/task/loot/loot_rewards_taskDetails_testcase.yml
- name: 查看详情
api: api/m_api/loot/loot_detail_api.yml
variables:
status: ${get_task_status_7_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 抢单任务状态验证-进行中
teststeps:
- name: 抢单任务状态验证-已领取,待确认
testcase: testcases/common/COM009_loot_open_status_7_testcase.yml
- name: 确认领取人
api: api/m_api/loot/loot_task_confirm_api.yml
varidate:
validate:
- eq:
- content.msg
- ok
- name: 查看详情中的状态
api: api/m_api/loot/loot_detail_api.yml
variables:
status: ${get_task_status_3_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 抢单任务状态验证-已完成,待验收
teststeps:
- name: 抢单任务状态验证-进行中
testcase: testcases/common/COM010_loot_open_status_3_testcase.yml
##-------------------------APP端完成抢单任务------------------------------
- name: 完成任务
testcase: testcases/task/loot/loot_task_finishTask_testcase.yml
- name: 查看详情中的状态
api: api/m_api/loot/loot_detail_api.yml
variables:
status: ${get_task_status_4_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 抢单任务状态验证-已验收,已完成
teststeps:
- name: 抢单任务状态验证-已完成,待验收
testcase: testcases/common/COM011_loot_open_status_4_testcase.yml
- name: 用户列表
output:
- uid0
- name0
- uid1
- name1
- uid2
- name2
- uid15
- name15
api: api/m_api/common/user_api.yml
extract:
uid0: content.data.list.0.uid
name0: content.data.list.0.name
uid1: content.data.list.1.uid
name1: content.data.list.1.name
uid2: content.data.list.2.uid
name2: content.data.list.2.name
uid15: content.data.list.15.uid
name15: content.data.list.15.name
- name: 抢单任务验收
api: api/m_api/loot/loot_task_accept_api.yml
validate:
- eq:
- content.code
- 0
- eq:
- content.msg
- ok
- name: 查看详情中的状态
api: api/m_api/loot/loot_detail_api.yml
variables:
status: ${get_task_status_5_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 抢单任务状态验证-已验收,已完成
teststeps:
- name: 抢单任务状态验证-已发布,待领取
testcase: testcases/common/COM008_loot_open_status_2_testcase.yml
- name: 关闭任务
api: api/m_api/loot/loot_task_close_api.yml
validate:
- eq:
- content.code
- 0
- eq:
- content.msg
- ok
- name: 查看详情中的状态
api: api/m_api/loot/loot_detail_api.yml
variables:
status: ${get_task_status_6_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 竞标任务状态验证-待发布
teststeps:
- name: 提问问题-审核问题-获取资源
testcase: testcases/permission/ques_pf_permission/QX001_pf_permission.yml
- name: 登录系统
variables:
phone: ${ENV(wpftwphone)}
testcase: testcases/common/COM002_m_login_testcases.yml
- name: 引用资源
api: api/m_api/task_resource_api.yml
teardown_hooks:
- ${teardown_hook_get_resource_id($response)}
- ${teardown_hook_get_resource_title($response)}
- ${teardown_hook_get_resource_content($response)}
varidate:
validate:
- eq:
- content.msg
- ok
- name: 保存任务
api: api/m_api/bid/bid_update_api.yml
teardown_hooks:
- ${teardown_hook_get_bid_task_id($response)}
varidate:
validate:
- eq:
- content.msg
- ok
- name: 查看详情
api: api/m_api/bid/bid_detail_api.yml
variables:
status: ${get_bid_task_status_1_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 竞标任务状态验证-已发布,待领取
teststeps:
- name: 竞标任务状态验证-待发布
testcase: testcases/common/COM014_bid_update_status_1_testcase.yml
- name: 发布任务
api: api/m_api/bid/bid_open_api.yml
varidate:
validate:
- eq:
- content.msg
- ok
- name: 查看详情
api: api/m_api/bid/bid_detail_api.yml
variables:
status: ${get_bid_task_status_2_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 竞标任务状态验证-已领取,待中标
teststeps:
- name: 竞标任务状态验证-已发布,待领取
testcase: testcases/common/COM015_bid_open_status_2_testcase.yml
- name: app端点击立即竞标
testcase: testcases/task/bid/bid_contendTasks_taskDetails_testcase.yml
- name: 查看详情
api: api/m_api/bid/bid_detail_api.yml
variables:
status: ${get_bid_task_status_2_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 竞标任务状态验证-已领取,进行中
teststeps:
- name: 竞标任务状态验证-已领取,待中标
testcase: testcases/common/COM016_bid_open_status_2_testcase.yml
- name: 竞标任务-中标
api: api/m_api/bid/bid_outbid_api.yml
- name: 查看详情
api: api/m_api/bid/bid_detail_api.yml
variables:
status: ${get_bid_task_status_3_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 竞标任务状态验证-已完成,待验收
teststeps:
- name: 竞标任务状态验证-待领取,进行中
testcase: testcases/common/COM017_bid_open_status_3_testcase.yml
##-------------------------APP端完成竞标任务------------------------------
- name: 完成任务
testcase: testcases/task/bid/bid_task_finishTask_testcase.yml
- name: 查看详情
api: api/m_api/bid/bid_detail_api.yml
variables:
status: ${get_bid_task_status_4_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 竞标任务状态验证-已验收,已完成
teststeps:
- name: 竞标任务状态验证-已完成,待验收
testcase: testcases/common/COM018_bid_open_status_4_testcase.yml
- name: 用户列表
output:
- uid0
- name0
- uid1
- name1
- uid2
- name2
- uid15
- name15
api: api/m_api/common/user_api.yml
extract:
uid0: content.data.list.0.uid
name0: content.data.list.0.name
uid1: content.data.list.1.uid
name1: content.data.list.1.name
uid2: content.data.list.2.uid
name2: content.data.list.2.name
uid15: content.data.list.15.uid
name15: content.data.list.15.name
- name: 竞标任务验收
api: api/m_api/bid/bid_task_accept_api.yml
validate:
- eq:
- content.code
- 0
- eq:
- content.msg
- ok
- name: 查看详情中的状态
api: api/m_api/bid/bid_detail_api.yml
variables:
status: ${get_bid_task_status_5_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 竞标任务状态验证-已关闭
teststeps:
- name: 竞标任务状态验证-已发布,待领取
testcase: testcases/common/COM015_bid_open_status_2_testcase.yml
- name: 关闭任务
api: api/m_api/bid/bid_task_close_api.yml
validate:
- eq:
- content.code
- 0
- eq:
- content.msg
- ok
- name: 查看详情中的状态
api: api/m_api/bid/bid_detail_api.yml
variables:
status: ${get_bid_task_status_6_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 指派任务状态验证-待发布
teststeps:
- name: 提问问题-审核问题-获取资源
testcase: testcases/permission/ques_pf_permission/QX001_pf_permission.yml
- name: 登录系统
variables:
phone: ${ENV(wpftwphone)}
testcase: testcases/common/COM002_m_login_testcases.yml
- name: 引用资源
api: api/m_api/task_resource_api.yml
teardown_hooks:
- ${teardown_hook_get_resource_id($response)}
- ${teardown_hook_get_resource_title($response)}
- ${teardown_hook_get_resource_content($response)}
varidate:
validate:
- eq:
- content.msg
- ok
- name: 保存任务
api: api/m_api/appoint/appoint_update_api.yml
teardown_hooks:
- ${teardown_hook_get_appoint_task_id($response)}
varidate:
validate:
- eq:
- content.msg
- ok
- name: 查看详情
api: api/m_api/appoint/appoint_detail_api.yml
variables:
status: ${get_appoint_task_status_1_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 指派任务状态验证-已发布,进行中
teststeps:
- name: 指派任务状态验证-待发布
testcase: testcases/common/COM021_appoint_update_status_1_testcase.yml
- name: 发布任务
api: api/m_api/appoint/appoint_open_api.yml
varidate:
validate:
- eq:
- content.msg
- ok
- name: 查看详情
api: api/m_api/appoint/appoint_detail_api.yml
variables:
status: ${get_appoint_task_status_3_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 指派任务状态验证-进行中,待验收
teststeps:
- name: 指派任务状态验证-已发布,进行中
testcase: testcases/common/COM022_appoint_open_status_3_testcase.yml
##-------------------------APP端完成指派任务------------------------------
- name: 完成任务
testcase: testcases/task/appoint/appoint_task_finishTask_testcase.yml
- name: 查看详情
api: api/m_api/appoint/appoint_detail_api.yml
variables:
status: ${get_appoint_task_status_4_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 指派任务状态验证-已验收,已完成
teststeps:
- name: 指派任务状态验证-进行中,待验收
testcase: testcases/common/COM023_appoint_open_status_4_testcase.yml
- name: 用户列表
output:
- uid0
- name0
- uid1
- name1
- uid2
- name2
- uid15
- name15
api: api/m_api/common/user_api.yml
extract:
uid0: content.data.list.0.uid
name0: content.data.list.0.name
uid1: content.data.list.1.uid
name1: content.data.list.1.name
uid2: content.data.list.2.uid
name2: content.data.list.2.name
uid15: content.data.list.15.uid
name15: content.data.list.15.name
- name: 指派任务验收
api: api/m_api/appoint/appoint_task_accept_api.yml
validate:
- eq:
- content.code
- 0
- eq:
- content.msg
- ok
- name: 查看详情
api: api/m_api/appoint/appoint_detail_api.yml
variables:
status: ${get_appoint_task_status_5_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
config:
name: 指派任务状态验证-已验收,已完成
teststeps:
- name: 指派任务状态验证-已发布,进行中
testcase: testcases/common/COM022_appoint_open_status_3_testcase.yml
- name: 关闭任务
api: api/m_api/appoint/appoint_task_close_api.yml
validate:
- eq:
- content.code
- 0
- eq:
- content.msg
- ok
- name: 查看详情
api: api/m_api/appoint/appoint_detail_api.yml
variables:
status: ${get_appoint_task_status_6_from_database()}
msg: ok
varidate:
validate:
- eq:
- content.msg
- $msg
- eq:
- content.data.status
- $status
\ No newline at end of file
... ... @@ -100,6 +100,15 @@ testcases:
- name: ME027-指派任务验收成功-任务领取人和参与人当前素币、贡献值数据正确
testcase: testcases/app/taskStatistics/ME027-taskStatistics-suMoney-winShares-appointCompleted.yml
- name: ME028-通过管理后台增加素币-当前素币增加、贡献值不变
testcase: testcases/app/taskStatistics/ME028-taskStatistics-suMoney-winShares-add.yml
- name: ME029-通过管理后台减少素币-当前素币减少、贡献值不变
testcase: testcases/app/taskStatistics/ME029-taskStatistics-suMoney-winShares-down.yml
- name: ME030-通过管理后台兑换素币-当前素币减少、贡献值不变
testcase: testcases/app/taskStatistics/ME030-taskStatistics-suMoney-winShares-exc.yml
##############################################个人中心数量统计用例结束###################################
##############################################悬赏任务列表用例开始###################################
... ...