我正在尝试编写一个通用的Makefile,它可以基于make命令中的第二个术语运行多个不同的单元测试。
基本上,我想写一些像这样的东西:
make test target1 # runs unit tests for target 1
make test target2 # runs unit tests for target 2
:
:
:
make test all # runs all unit tests
但我找不到任何关于如何操作的文档。我现在有的是:
.PHONY: clean test
test-target1:
pytest --cov-report term-missing --cov=a .\target1\
test-target2:
pytest --cov-report term-missing --cov=b .\target2\
test-all:
### I don't know what to put here ###
但是这个语法要求你使用make test-target1
并包括连字符。
编辑:
基于一些非常好的建议,我现在有了更新的Makefile:
a: # ...
pytest --cov-report term-missing --cov=a.\UnitTest\a
.PHONY: test
test : $(RUN_ARGS)
@echo "Running unittests for $(RUN_ARGS)..."
但是运行make test a
返回
Running unittests for ...
make: 'a' is up to date.
如果我把a
改为a1
,那么make test a1
将运行实际的单元测试。为什么不允许a
RUN_ARGS?
作为参考,代码的结构是:
src/a
src/b
src/UnitTest
src/UnitTest/a
src/UnitTest/b
3条答案
按热度按时间2j4z5cfb1#
就看其他测试目标了。
您可以通过使用一个模式来匹配您的测试目标来稍微简化这个过程。像这样:
其中
make test-all
产生:cnjp1d6j2#
感谢我得到的所有帮助,我能够通过创建下面的
Makefile
来解决我的问题的两个部分:wljmcqd83#
您可以使用自动变量(
$*
)和特定于目标的变量(COV
)作为参数。第一次尝试时显示的测试规则示例: