CukeTest Python执行工具
提供了一个Python包,用于在快速启动一个或多个CukeTest测试项目。以便在其它Python程序或测试平台中集成CukeTest功能。
介绍
由于CukeTest的测试项目主要采用JavaScript语言编写,但大部分测试人员往往更熟悉Python,因此提供了一个Python包,用于启动CukeTest测试项目,通过这个包用户可以快速编写脚本将CukeTest的测试项目集成到现有的持续集成/测试平台中去。
用法
引入模块
Python
from cuketest_runner import run
使用
run(path, args=[], env={}, outdir='')
运行测试项目,可以指定运行选项和环境变量,并且可以通过指定输出目录来收集运行报告。
- path:
String
类型,CukeTest项目路径; - args:(可选)
List
类型,用于CukeTest命令行的参数,支持的参数可以查看命令行界面。 - env:(可选)
Dict
类型,用于项目运行的环境变量; - outdir:(可选)
String
类型,项目运行报告的生成路径。如果同时指定了args
的--out
选项,会忽略该选项的值。 - 返回值:
Number
类型,为退出码exitcode
。当项目中的场景和步骤全部通过时返回0,否则返回1。
参考用法
Python
def main():
project_dir = join(dirname(__file__),'./test/math') # 目标项目路径
out_dir = join(dirname(__file__),'./test/temp/another_specific') # 报告生成的目标文件夹
args = []
# 追加下面的配置使报告另外生成json格式的副本
args.extend(['--format', "json"])
# 追加下面的配置使得带`fail`标签的场景或步骤不执行
args.extend(['--tags', "not @fail"])
# 追加下面的配置录制运行过程
args.extend(['--video'])
env = {"TEST_VERSION": "debug"} # 环境变量,为字典类型
exitcode = run(project_dir, args, env, out_dir)
# 指定了--tags "not @fail"条件后应该全部通过,退出码为0
assert exitcode == 0
runDetach(path, args=[], env={}, outdir='')
分离的运行测试项目,当需要并行运行API测试、无头Web测试时,可以通过这种方式分离出多个进程运行项目,提高运行效率。使用方式与run()方法一致。
样例
一、直接运行测试项目
指定项目目录直接运行,这样运行后不会生成报告:
Python
project_dir = join(dirname(__file__),'./test/math') # 目标项目路径
exitcode = run(project_dir) # 指定项目可以直接运行,但不会生成报告,需要配置--format选项,如下
二、设置输出报告格式为html,使用环境变量传递参数
通过传入--format
选项来指定生成报告的格式,并且可以传入环境变量:
Python
project_dir = join(dirname(__file__),'./test/math') # 目标项目路径
args = ["--format", "html"] # 运行配置,可以通过CukeTest运行配置快速生成
env = {"TEST_VERSION": "debug"} # 环境变量,为字典类型
exitcode = run(project_dir, args, env)
三、追加运行参数,并指定报告的输出路径
通过指定out_dir
参数将项目运行生成的报告输出到指定路径中,以便收集多个项目的运行结果:
Python
project_dir = join(dirname(__file__),'./test/math') # 目标项目路径
out_dir = join(dirname(__file__),'./test/temp/another_specific') # 报告生成的目标文件夹
args = []
# 追加下面的配置使报告另外生成json格式的副本
args.extend(['--format', "json"])
# 追加下面的配置使得带`fail`标签的场景或步骤不执行
args.extend(['--tags', "not @fail"])
# 追加下面的配置录制运行过程
args.extend(['--video'])
env = {"TEST_VERSION": "debug"} # 环境变量,为字典类型
exitcode = run(project_dir, args, env, out_dir)