我想在Makefile中触发单元测试和集成测试,我目前的实现是这样的:
all: unittest integration
unittest:
$(ECHO) @echo 'Running unittest'
@unset TYPE
@nosetests
integration:
$(ECHO) @echo 'Running integration test'
@export TYPE=integration
@nosetests
但我在设置环境变量方面遇到问题,当我运行make integration
时,如果我使用TYPE
手动设置环境变量,则不会设置export TYPE=integration
环境变量,然后我运行make unittest
,环境变量不会被取消。怎么解决这个问题?
答案 0 :(得分:2)
配方中的每个命令都在一个单独的shell中运行。运行export TYPE
的shell立即退出;然后下一个命令在一个新的,新的实例中运行,当然没有这个设置。
shell具有在一个命令的持续时间内设置变量的特定语法;用那个。
all: unittest integration
unittest:
echo 'Running unittest'
TYPE= nosetests
integration:
echo 'Running integration test'
TYPE=integration nosetests
顺便说一句,你不应该为自己的变量使用大写;这些名称保留供系统使用。