来自 bash 的条件鼻子测试
Conditional nosetests from bash
作为我们在 Jenkins 中的集成测试的一部分,我试图仅 运行 测试在 git 次提交之间发生变化的文件。
下面的代码有效,除非过滤器删除所有文件结果。然后所有测试都通过鼻子得到 运行 。在那种情况下,我不想进行测试 运行。
if [ $GIT_PREVIOUS_SUCCESSFUL_COMMIT != $GIT_COMMIT ]; then
git diff --name-only --diff-filter=d $GIT_PREVIOUS_SUCCESSFUL_COMMIT $GIT_COMMIT | grep .py | xargs nosetests -vv
fi
有什么建议吗?
你不应该这样测试。它太容易出错了。
首先,我认为你应该mark your tests这样你就可以适当地跳过它们
然后,在你的 Jenkins 构建中,你可以有选择地挑选你想要的 运行。如果您有数百或数千个测试需要很长时间,您应该考虑使用 pytest-xdist 并行测试。您可能已经知道,所有测试都应该 运行 独立。
我的理念是测试一切,否则就别费心了。
我想我明白了。需要拆分初始结果并在调用 nosetests 之前检查列表是否为空。
if [ $GIT_PREVIOUS_SUCCESSFUL_COMMIT != $GIT_COMMIT ]; then
TESTFILES=$(git diff --name-only --diff-filter=d $GIT_PREVIOUS_SUCCESSFUL_COMMIT $GIT_COMMIT | grep .py)
if [ -z "$TESTFILES" ]; then
echo "No test files found"
else
nosetests -vv $TESTFILES
fi
fi
作为我们在 Jenkins 中的集成测试的一部分,我试图仅 运行 测试在 git 次提交之间发生变化的文件。
下面的代码有效,除非过滤器删除所有文件结果。然后所有测试都通过鼻子得到 运行 。在那种情况下,我不想进行测试 运行。
if [ $GIT_PREVIOUS_SUCCESSFUL_COMMIT != $GIT_COMMIT ]; then
git diff --name-only --diff-filter=d $GIT_PREVIOUS_SUCCESSFUL_COMMIT $GIT_COMMIT | grep .py | xargs nosetests -vv
fi
有什么建议吗?
你不应该这样测试。它太容易出错了。
首先,我认为你应该mark your tests这样你就可以适当地跳过它们 然后,在你的 Jenkins 构建中,你可以有选择地挑选你想要的 运行。如果您有数百或数千个测试需要很长时间,您应该考虑使用 pytest-xdist 并行测试。您可能已经知道,所有测试都应该 运行 独立。
我的理念是测试一切,否则就别费心了。
我想我明白了。需要拆分初始结果并在调用 nosetests 之前检查列表是否为空。
if [ $GIT_PREVIOUS_SUCCESSFUL_COMMIT != $GIT_COMMIT ]; then
TESTFILES=$(git diff --name-only --diff-filter=d $GIT_PREVIOUS_SUCCESSFUL_COMMIT $GIT_COMMIT | grep .py)
if [ -z "$TESTFILES" ]; then
echo "No test files found"
else
nosetests -vv $TESTFILES
fi
fi