在Python鼻子测试中指定执行顺序

时间:2019-03-19 08:33:35

标签: python-3.x nose

我的测试用例是独立的,执行顺序的要求有点复杂。考虑有4个测试用例(单独的文件),即测试A,B,C和D

执行:

TEST_DIRECTORIES=(
 ${SCRIPT_PATH}'/tests/dir1/'
 ${SCRIPT_PATH}'/tests/dir2/'
 ...
)
nosetests  --debug-log=nose.log --debug=nose,nose.result  --processes=`getconf _NPROCESSORS_ONLN` --process-timeout=600 --process-restartworker -s --logging-level=INFO --no-byte-compile --nologcapture  ${TEST_DIRECTORIES[*]}

问题:

测试A->没问题
测试B->没有问题
测试C->多进程启动方法必须为“ spawn”,默认情况下会引发错误           上下文“ fork”
测试D->没有问题

注意:
一种。如果我将测试C中的启动方法更改为产生,则测试会以良好的速度运行,直到遇到测试C为止,它可以是随机的,一旦发生,所有测试的速度都会降低。
b。另外,如果我说测试A,B,D以分叉模式启动,而测试C以派生模式启动,则有时会失败,因为测试是以随机顺序启动的,并且测试C可能具有“ fork”方法,因此失败了。

可能的解决方案:
1.如果我更改了默认的spawn启动方法,它将起作用!但以产生新流程而不是派生的时间为代价。由于时差很大,因此不是最佳解决方案
2.将测试A,B,D和测试C作为单独的鼻子测试运行。但是在这种情况下,由于我正在使用覆盖率,如何将测试C的覆盖率结果添加到测试A,B,D覆盖率中?理想情况下,所有测试应在单个命令中启动。
3.指定顺序,以使测试A,B,D在分叉模式下运行,而随后的测试C在“生成”模式下运行。我搜索了Test Suite的文档,但是最核心的原则之一就是避免了套件的测试检测和自动执行。

如何解决上述问题,而又不会在默认的多进程上下文中浪费大量时间和兼容性问题? (给出的测试是一个例子,它的问题更大,要进行1000多个测试,因此效率至关重要)。

0 个答案:

没有答案