小编cru*_*vid的帖子

从测试中获取详细输出

如何进行"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获得详细输出?.

cmake ctest

8
推荐指数
1
解决办法
3966
查看次数

Python:从另一个文件中更改全局变量

在我的主类中,我使用在另一个名为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

3
推荐指数
1
解决办法
1860
查看次数

使用字典理解转换Python字典

我有以下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)

我怎么能在一个班轮里做这件事?

python dictionary dictionary-comprehension

2
推荐指数
1
解决办法
98
查看次数

在生产代码中保留 DEBUG 日志记录级别

过去,我的客户会打电话告诉我他们的软件出现了问题。我会登录该网站,然后查看错误日志。

但是,我发现错误日志倾向于解释发生了什么错误,而不是解释为什么发生错误。要了解导致问题的原因,需要以前的状态信息,这些信息仅包含在 DEBUG 日志中。

因此,几乎每次,我都必须更改日志级别,重新启动软件,并花费大量时间尝试重现问题。

我决定让生产代码在 DEBUG 日志级别运行,但进行了一项调整:我将最大日志大小限制journald.conf为 10GB。在 500GB 的机器上,这对我来说似乎很好。

现在我可以使用journalctl --sincejournalctl --until将巨大的日志过滤到我的客户说发生错误的时间段。

现在,当问题出现时,我不会浪费时间重新创建问题。

我的问题:

让生产代码在客户端站点上以详细 DEBUG 级别运行会产生什么影响?

我发现这里的答案不够充分: 生产中的日志级别

logging

2
推荐指数
1
解决办法
6045
查看次数

Cmake中的两组测试

我有两组测试(功能和单元测试),我希望能够指定通过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如何打印出测试结果.

automated-tests cmake ctest

1
推荐指数
1
解决办法
303
查看次数

Python如何在一行中创建密钥或更新密钥?

我的问题类似于 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()来做到这一点?

python dictionary

0
推荐指数
1
解决办法
166
查看次数