测试开发
kunlun-data文件夹
首次安装Kunlun平台后, 执行 kunlun start , 平台将自动创建 ~\kunlun-data 文件夹, 用户也可以自行创建此文件夹。
~\kunlun-data 包含以下文件或文件夹.
db.sqlite3:数据库文件, 保存测试记录.logs:测试日志文件夹, 保存测试过程中产生的测试日志, 以及保存一些临时文件.
定制用户界面
用户可以通过以下方式将 测试程序示例 下载到 ~\kunlun-data 文件夹
cd ~\kunlun-data
git clone git@gitee.com:robinwu0607/kunlun_scripts_demo.git
mv kunlun_scripts_demo kunlun_scripts
configs中包含界面定制代码.demo中包含演示测试代码.
用于演示的 autotest.py 文件的内容示例如下, 用户可以根据业务需要进行增加、修改或是拷贝:
def main():
return [
{
'name': 'ST1',
'description': 'X客户ST1测试',
'image': 'assets/server.png',
'esop': 'http://www.baidu.com',
'container': [
{
'name': 'DUT01',
'py_path': 'demo/kunlun/test_st1.py::Test::test_st1',
'connection': [
{'name': 'INFO', 'type': 'info'},
{'name': 'EVENT', 'type': 'event'},
{'name': 'REF', 'type': 'session', 'col': 6},
{'name': 'CPU', 'type': 'session', 'col': 6},
{'name': 'STEP', 'type': 'step'},
{'name': 'MEASURE', 'type': 'measure'},
],
},
],
}
]
需要注意的是:每次对 autotest.py 进行修改, 必须使用 kunlun start 重启服务, 修改后的内容才会生效.
py_path 的路径是入口函数, 遵循pytest的标准路径.
开发者模式与生产模式
在测试主界面, 用户可以自由切换 生产模式 与 开发模式 (默认为 生产模式 ), 平台后台将根据选择的模式,
自动处理调用 kunlun_scripts 或是 develop 文件夹下测试代码.
需要强调的是:每次页面刷新后, 测试模式将会默认切换至 生产模式 .
测试代码开发方案
用户的代码存放于 ~\kunlun-data\kunlun_scripts 下.
给开发者建议:
用户项目下的文件夹与文件, Python代码开发规范参考PEP8规范, PEP8链接为: https://www.python.org/dev/peps/pep-0008/
用户项目下的每一个文件夹, 都包含文件
__init__.py.用户项目文件夹的名称与实际项目名称保持一致.
使用
git等版本工具管理测试代码.
基于不同的测试需求与目标, 用户可以采用快速开发方案或是测试序列编排方案.
小型项目快速开发
建议采用快速开发方案的是:
相对独立的项目(较少与其他项目复用代码).
测试命令行小于或等于20条的项目.
快速开发方案的演示代码可以参考 demo/kunlun/test_st1.py::Test::test_st1 .
以下截取部分代码片段进行说明:
def test_st1(self):
container_name = lib.get_container_name()
log.debug(container_name)
lib.set_display1("机型: 1234567890123456")
lib.set_display2("料号: 1234567890123456")
lib.set_display3("Slot ID: 1234567890123456")
lib.add_test_data(sernum="1234567890", duttype="DEMO", area="DEMO")
uut = lib.cn.ref
uut.open()
start_time = time.time()
count = 0
while time.time() - start_time < 1:
count += 1
lib.set_display4(f"测试次数: {count}")
log.debug(f"第{count}次测试")
uut.send("python3\r", expect=">>>", timeout=10)
uut.send("import sys\r", expect=">>>", timeout=10)
uut.send("sys.platform\r", expect=">>>", timeout=10)
uut.send("exit()\r", expect=[">", "$"], timeout=10)
lib.add_measure("TEST_TIME", value=1, low=1, high=1)
return
大型项目测试编排
建议采用测试序列编排方案的是:
大型项目的子项目(较多与其他项目复用代码).
持续演进的项目.
需要实施较多测试策略的项目.
测试命令行大于20条的项目.
测试序列编排方案的演示代码可以参考 demo/kunlun/test_st1.py::Test::test_st1 .
以下截取部分代码片段供参考:
def test_st1(self):
seq = lib.get_sequence_definition('ST1 Sequence')
seq.add_step(self.scan_sernum, name='Scan Sernum')
seq.add_step(self.test_case01, name='Test Case 1')
seq.add_step(self.test_case02, name='Test Case 2')
seq.run()
需要注意的是: 最后需要调用 seq.run() 执行测试序列.
测试用例格式
测试用例必须是pytest的标准格式, 用例名必须以
test_开头.测试用例必须使用allure的修饰器, 否则不会被识别到, 以下是必须包含的修饰器示例, 共计5个:
@allure.epic('DEMO项目') @allure.feature('产线测试') @allure.story('老化测试') class Test: @allure.title('守护程序') @allure.id('burn_daemon') def test_01(self): # 省略测试用例代码 pass
导入其他pip依赖包
用户代码中如导入其他依赖, 直接使用 pip install 安装对应依赖包即可.