用于检测柠檬测试的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

算法

  1. 获取已更改的源文件(git diff)
  2. 识别测试源文件(使用unittest discovery并与步骤1相交)
  3. 识别业务逻辑文件(设置步骤1和步骤2之间的差异)
  4. 使用git还原业务逻辑代码(git checkout)
  5. 运行已更改的测试
  6. 为每个成功的测试引发异常

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在未知属性上的PUT和POST失败会引发不同的行为   java无法使GWTRPC正常工作   java如何在安卓中更改一个特定视图的主题?   机器学习为什么改变了java中等式的两面?   java继承和重定向标准输出   java为什么Clojure中嵌套循环/重复速度慢?   使用JavaParser解析Java代码并查找父节点的语句类型   java读取类的方法并在arraylist中存储Web服务的路径名   java模板聚合匹配和投影一个没有id的字段   java为什么给定数组不返回false   java如何链接JLabel和JSpinner以调整大小   在java中,当过滤器只返回一个对象时,如何使用流和过滤器将值填充到对象中   java为什么使用getInstance   如何得到我的。运行java命令的bat文件