用于检测柠檬测试的unittest运行程序
lemontest的Python项目详细描述
?test /ˈlɛmən tɛst/ Noun. 1. A test which appears to test a feature, but in fact does not test that feature at all. [us. I reviewed that pull request and found one ?test that doesn't test right.]
什么?
用于检测测试的单元测试运行程序。
为什么?
良好的开发实践要求新的特性应该伴随着新的测试。良好的测试可以识别特征的回归和意外删除。
测试,是一种看似测试某个功能,但实际上根本不测试该功能的测试。测试可以被认为比根本没有测试更糟糕,因为它们给出了一个错误的假设,即您的新功能已经测试过。如果发生回归,测试不会让你知道。检测测试可以识别功能不符合您要求的情况。检测测试有助于确保代码质量和功能交付。
此库标识测试。这是通过检查两个git分支完成的:特性和合并目标。该算法将业务逻辑与测试代码分离,然后使用git将业务逻辑还原为其先前的状态(与合并目标相同)。然后,使用新测试在还原的业务逻辑上运行测试套件。任何成功的测试都标记为测试。
测试是突变测试的一种形式。本例中的变异操作是将业务逻辑还原为编写功能之前的状态。
快速启动
pip install lemontest manage.py test --testrunner=lemontest.djangorunner.DjangoLemonTestRunner --to-branch=master --from-branch=feature/123
它必须是一个git存储库。
lemontest需要一个git存储库来还原业务逻辑。
特拉维斯ci
travis方便地提供了我们可以使用的环境变量。
pip install lemontest manage.py test --testrunner=lemontest.djangorunner.DjangoLemonTestRunner --to-branch=$TRAVIS_BRANCH --from-branch=$TRAVIS_PULL_REQUEST_SHA
算法
- 获取已更改的源文件(git diff)
- 识别测试源文件(使用unittest discovery并与步骤1相交)
- 识别业务逻辑文件(设置步骤1和步骤2之间的差异)
- 使用git还原业务逻辑代码(git checkout)
- 运行已更改的测试
- 为每个成功的测试引发异常