如何进行"make test"以显示详细输出?我希望"make test"通过命令行执行与ctest -V相同的操作.
我尝试将以下内容添加到我的CMakeLists.txt中,没有任何效果:(
set(ENV{CTEST_OUTPUT_ON_FAILURE} TRUE)
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --verbose)
add_custom_command(TARGET test PRE_BUILD
COMMAND ${CMAKE_CTEST_COMMAND} -V)
Run Code Online (Sandbox Code Playgroud)
但是当我运行make test时我仍然会得到这个:
Start 1: unittest1
1/143 Test #1: unittest1 .................................... Passed 0.01 sec
Start 2: unittest2
2/143 Test #2: unittest2 ............................ Passed 0.03 sec
Start 3: unittest3
3/143 Test #3: unittest3 .................... Passed 0.02 sec
Run Code Online (Sandbox Code Playgroud)
为了澄清,我想在我的CMakeLists.txt中添加一些内容以使其成为可能,我不想要一个手动解决方案,要求我在命令行中添加"make test",例如
CTEST_OUTPUT_ON_FAILURE=TRUE make test
Run Code Online (Sandbox Code Playgroud)
要么
ctest -V
Run Code Online (Sandbox Code Playgroud)
我的问题类似于使用cmake如何从ctest获得详细输出?.
在我的主类中,我使用在另一个名为config.py的文件中定义的全局变量ADDRESS。我想通过在config.py中调用一个函数来从主类中更改ADDRESS的值。
在我的主班我有:
from config import ADDRESS, change_address
change_address("192.168.10.100")
print("new address " + ADDRESS)
Run Code Online (Sandbox Code Playgroud)
在我的配置文件中,我有以下内容:
ADDRESS = "0.0.0.0"
def change_address(address):
global ADDRESS
ADDRESS = address
print("changed address to: " + ADDRESS)
Run Code Online (Sandbox Code Playgroud)
我的配置文件中的print语句正确打印了新地址192.168.10.100。但是,我的主类中的print语句显示0.0.0.0。我在这里想念什么?
我有以下Python字典:
{
"cat": 1,
"dog": 1,
"person": 2,
"bear": 2,
"bird": 3
}
Run Code Online (Sandbox Code Playgroud)
我想使用字典理解将其转换为以下字典:
{
1 : ["cat", "dog"],
2 : ["person", "bear"],
3 : ["bird"]
}
Run Code Online (Sandbox Code Playgroud)
我怎么能在一个班轮里做这件事?
过去,我的客户会打电话告诉我他们的软件出现了问题。我会登录该网站,然后查看错误日志。
但是,我发现错误日志倾向于解释发生了什么错误,而不是解释为什么发生错误。要了解导致问题的原因,需要以前的状态信息,这些信息仅包含在 DEBUG 日志中。
因此,几乎每次,我都必须更改日志级别,重新启动软件,并花费大量时间尝试重现问题。
我决定让生产代码在 DEBUG 日志级别运行,但进行了一项调整:我将最大日志大小限制journald.conf为 10GB。在 500GB 的机器上,这对我来说似乎很好。
现在我可以使用journalctl --since和journalctl --until将巨大的日志过滤到我的客户说发生错误的时间段。
现在,当问题出现时,我不会浪费时间重新创建问题。
我的问题:
让生产代码在客户端站点上以详细 DEBUG 级别运行会产生什么影响?
我发现这里的答案不够充分: 生产中的日志级别
我有两组测试(功能和单元测试),我希望能够指定通过cmake运行的集合.
一组测试是我想通过"make test"运行的单元测试.
另一组测试是我想通过"make functionaltests"运行的功能测试.
目前两者都是ctest的一部分,因为我通过add_test运行两个套件.我的CMakeLists.txt文件是这样的:
FOREACH(functional_test ${functional_tests})
ADD_TEST(NAME functional_test COMMAND f_test.sh functional_test)
ENDFOREACH(functional_test)
FOREACH(unit_test ${unit_tests})
ADD_TEST(NAME unit_test COMMAND u_test.sh unit_test)
ENDFOREACH(unit_test)
Run Code Online (Sandbox Code Playgroud)
我想为两个套件利用ctest,因为它为我提供了一个漂亮的,可读的测试套件格式(测试通过,哪些测试失败).
我宁愿不必创建自定义可执行文件,为它创建一个名为functionaltests的目标,并尝试模仿ctest如何打印出测试结果.
我的问题类似于 Python dict如何创建键或将元素附加到键?
我想创建以下字典词典:
my_dict = {
"name1" : { "id1" : "pin1", "id2" : "pin2" },
"name2" : { "id3" : "pin3", "id4" : "pin4" }
}
Run Code Online (Sandbox Code Playgroud)
我目前使用以下方法完成此任务:
if name in my_dict:
my_dict[name].update({ id : pin }
else:
my_dict[name] = { id : pin }
Run Code Online (Sandbox Code Playgroud)
有没有办法使用dict.setdefault()来做到这一点?