有没有办法启动仅与更改的代码相关的单元测试?
Is there a way to start unit tests which related only to changed code?
在我的 Python 项目中,我们有大量的单元测试(几千个)。虽然它们在逻辑上分布在文件和 类 之间,但有时我需要很多时间才能找到涵盖我正在更改的功能的文件。
当然,我可以 运行 从某些特定的 file/class 进行所有测试,但是同样由于大量的测试,运行 它们会很耗时连续(我每次在 IDE 中保存文件后都在执行单元测试)。
所以总的来说,我需要一些可以同时执行以下活动的解决方案:
- 跟踪哪些文件自上次保存后发生了更改
- 跟踪那些文件中已更改的代码与覆盖该代码的单元测试之间的依赖关系
- 有选择地只执行那些覆盖受影响代码的单元测试
有没有人知道类似的事情?
假设 1:您可以将 IDE 设置为在文件保存时触发脚本。
假设 2:该脚本可以接收正在保存的文件的名称并访问文件内容。
您可以创建一个测试覆盖率描述"file"(存储位置:无关紧要)如下:
**module** **tested by**
mymod1.py testsuite1.py
mymod2.py testsuite2.py
mysubmod1.py testsuite3.py
mysubmod2.py testsuite3.py
读取您保存的文件以获取导入语句并从测试列中检索所有需要的值以涵盖您保存的文件和依赖项。然后 运行 你的测试模块。
我想这也可以从命令行运行,将更改后的文件名作为参数。
我想也许依赖跟踪需要换个方向。如果是这样,则必须解析目录中所有内容的导入以查找更改的模块。其余过程将相同。
您可能想结帐 pytest-incremental:
The idea is to execute your tests faster by executing not all of them but only the “required” ones.
通过 pypi 安装:
pip install pytest-incremental
用法:
$ py.test --inc
我认为它可以满足您的需求,它 "looks for imports recursively to find dependencies (using AST)" 并且只运行更改的测试。
pytest-testmon is a pytest plugin which selects only tests affected by changes since last execution. It uses Coverage.py 跟踪各个测试的依赖关系,并比较和保存每次执行时方法的校验和。
在我的 Python 项目中,我们有大量的单元测试(几千个)。虽然它们在逻辑上分布在文件和 类 之间,但有时我需要很多时间才能找到涵盖我正在更改的功能的文件。
当然,我可以 运行 从某些特定的 file/class 进行所有测试,但是同样由于大量的测试,运行 它们会很耗时连续(我每次在 IDE 中保存文件后都在执行单元测试)。
所以总的来说,我需要一些可以同时执行以下活动的解决方案:
- 跟踪哪些文件自上次保存后发生了更改
- 跟踪那些文件中已更改的代码与覆盖该代码的单元测试之间的依赖关系
- 有选择地只执行那些覆盖受影响代码的单元测试
有没有人知道类似的事情?
假设 1:您可以将 IDE 设置为在文件保存时触发脚本。
假设 2:该脚本可以接收正在保存的文件的名称并访问文件内容。
您可以创建一个测试覆盖率描述"file"(存储位置:无关紧要)如下:
**module** **tested by**
mymod1.py testsuite1.py
mymod2.py testsuite2.py
mysubmod1.py testsuite3.py
mysubmod2.py testsuite3.py
读取您保存的文件以获取导入语句并从测试列中检索所有需要的值以涵盖您保存的文件和依赖项。然后 运行 你的测试模块。
我想这也可以从命令行运行,将更改后的文件名作为参数。
我想也许依赖跟踪需要换个方向。如果是这样,则必须解析目录中所有内容的导入以查找更改的模块。其余过程将相同。
您可能想结帐 pytest-incremental:
The idea is to execute your tests faster by executing not all of them but only the “required” ones.
通过 pypi 安装:
pip install pytest-incremental
用法:
$ py.test --inc
我认为它可以满足您的需求,它 "looks for imports recursively to find dependencies (using AST)" 并且只运行更改的测试。
pytest-testmon is a pytest plugin which selects only tests affected by changes since last execution. It uses Coverage.py 跟踪各个测试的依赖关系,并比较和保存每次执行时方法的校验和。