使用python -m unittest运行absltest时无法创建临时目录的解决方案

专栏 / 使用python -m unittest运行absltest时无法创建临时目录的解决方案

使用python -m unittest运行absltest时无法创建临时目录的解决方案

2023-01-06 11:27 --阅读 · --喜欢 · Shimatsukaze
粉丝: 114 文章: 1

absl是Google开源的对C++和python标准库的扩充库。其中absltest可以替代python的unittest,它提供了更多方便的assert方法和测试相关的helper。但是今天遇到了一个问题,在这里记录一下:

test.py:

尝试运行测试:

可以看到没有任何问题。然而,如果使用python -m unittest来运行,就会出现如下报错:

原因是:absl支持用--test_tmpdir命令行参数指定临时目录的路径,因此会尝试读取--test_tmpdir的值。然而,absl.flag.FLAGS是在absltest.main()中解析的,python -m unittest并不会调用这段代码。因此会出现以上“尝试访问未解析的flag”的报错。

为了解决这个问题,可以在python -m unittest运行时将所有flag手动标记为已解析,这样一来测试会使用它们的默认值。

在setUpClass函数中判断一下flag是否被解析了,然后处理即可。使用python test.py或python -m unittest test.py都可以成功运行这个测试。

投诉或建议
华为 WATCH Ultimate 上手体验:5999 的堆料表皇,值吗?
提起华为的智能手表,我们可能很自然地会想到 WATCH GT 系列,除了支撑起华为智能手表的出货量,这个系列自诞生以来也一直是竞品学习和模仿的对象。今年 3 月新发布的华为 WATCH Ultimate 则是有别于 GT 系列、在高端智能手表领域的一个全新尝试,可以说是软硬件堆料都被推到新高度的一款产品,我们当然也很好奇这款华为“表皇”级别的产品究竟能做到什么水平。A.外观 & 佩戴体验华为 WATCH Ultimate 这次一共有两个版本,我们拿到的是搭配钛金属表带的纵横海洋版,银色的金属表身和表带搭配