TaskTower (任务塔)一个任务执行与状态监控装载器
Project description
TaskTower
简介
任务塔:一个任务执行与状态监控装载器,也可用于自动化用例执行。
对于一个项目,抽象分为项目层(ProjectLayer)、模块分类层(FeatureLayer)、用例函数层(CaseLayer)、步骤层(StepLayer)四个层级,
形成一个树形结构,通过ProjectLayer.run()执行整个测试用例项目。
注意:本库初衷是为了能实时查看用例执行状态,并且尽可能不侵入原脚本,所以将自动化测试的层级抽象类化装载,而并非要求重写脚本。
- 适用于长时间执行的自动化用例项目,可提供实时状态查询。
- 也可用于长时间运行的任务监控。
最低侵入性使用要求:用例函数在执行通过时必须返回0(默认0,可修改代表这个成功的返回值),其他无返回、任何返回、任何异常都视为用例失败。
安装
-
打包为
.whl文件pip install wheel setuptools python setup.py bdist_wheel -
通过
.whl文件安装pip install dist/TaskTower-1.0-py3-none-any.whl
用法示例
from pathlib import Path
from TaskTower import ProjectLayer, FeatureLayer, CaseLayer, BaseCase, baseConfig
baseConfig.successFlag = 0 # 设置用例执行成功标志,默认为0
projectLayer = ProjectLayer(Path('.')) # 用例项目初始化,设置项目根目录
featureLayer = FeatureLayer('feature1', projectLayer) # 模块分类初始化,设置模块分类名称、所属项目。这个名称可以是子目录名
# 以上两行代码的含义是:有一个当前目录的项目,项目下有个 feature1 模块分类
def beforeCase(func):
"""示例装饰器"""
def wrapper(*args, **kwargs):
projectLayer.dtLog.info('beforeCase'.center(60, '-'))
return func(*args, **kwargs)
return wrapper
# ############# 方式一:耦合性较低,定义执行函数即可,仅返回0代表成功 ###########
@beforeCase
def case_001():
"""TestCase: case_001, 测试用例001"""
projectLayer.dtLog.info("开始测试步骤***1")
projectLayer.dtLog.info("开始测试步骤***2")
return 0
# ############# 方式二:耦合性非常高,继承BaseCase(也可自行重写此类)后,在init中定义用例属性和步骤属性,在run方法中串联步骤逻辑 ###########
class Case(BaseCase):
# 用例基本属性
case_num = 'case_001'
case_title = '测试用例001'
case_tag = ('abc',)
def init(self):
# 定义用例属性、步骤属性
self.caseLayer = CaseLayer(self.run, featureLayer=featureLayer)
self.step1 = self.addStepLayer("step1: 测试步骤1", lambda x: projectLayer.dtLog.info(f'开始测试步骤***{x}'))
self.step2 = self.addStepLayer('step2: 测试步骤2', lambda x: projectLayer.dtLog.info(f'开始测试步骤***{x}'))
@beforeCase
def run(self):
# 串联执行步骤
self.step1.runStep(1)
self.step2.runStep(2)
return 0
if __name__ == '__main__':
CaseLayer(case_001, featureLayer=featureLayer) # ####### 取消注释后则是方式一
# featureLayer.addCaseLayer(Case().caseLayer) # ####### 取消注释后则是方式二
projectLayer.dtLog.info('=' * 80)
ok, no = projectLayer.run()
projectLayer.dtLog.info('=' * 80)
projectLayer.dtLog.info(f'通过用例数:{ok},不通过用例数:{no}')
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file TaskTower-1.0.tar.gz.
File metadata
- Download URL: TaskTower-1.0.tar.gz
- Upload date:
- Size: 27.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
245b81b98e36d6f1457c984ba62f87e5d1473b4c62323b32c19fa45ca5b3b401
|
|
| MD5 |
f36717dc23debe0b1d756861fc4f4a51
|
|
| BLAKE2b-256 |
294358802e264c2a66d0a06f48a5eb954ffd63fbc3af6f6158b70ee1abf72b8b
|
File details
Details for the file TaskTower-1.0-py3-none-any.whl.
File metadata
- Download URL: TaskTower-1.0-py3-none-any.whl
- Upload date:
- Size: 33.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
087268e6e3f1e24fb7d76db6e9ad485c47239a22cf38983a7fc9e0b8136822fa
|
|
| MD5 |
b7f4957acee418d01ca8fe9ad04bbe7e
|
|
| BLAKE2b-256 |
50d571b9fd6841bf1d113e4d6d4a3172fe74670217c55a43af59cb5f181aaab7
|