debugging 如何知道代码是否在测试中运行?全局?[duplicate]

z6psavjg  于 2022-12-19  发布在  其他
关注(0)|答案(2)|浏览(96)
    • 此问题在此处已有答案**:

Detect django testing mode(7个答案)
3天前关闭。
现在我们可以知道代码是否在DEBUG模式下运行:
https://stackoverflow.com/a/16648628/2544762
但同时,当我们在单元测试中运行代码时,我们总是得到debug == False
https://docs.djangoproject.com/en/4.1/topics/testing/overview/#other-test-conditions
在我自己的情况下,我只是真的想在调试条件下编写一些代码,并希望用debug == True测试它,我该怎么做呢?
那么,有没有办法检测代码是否在用test运行?在任何地方。

0h4hbjxa

0h4hbjxa1#

有没有什么方法可以检测代码是否在运行test?
是的。
你想要一个与django提供的有不同语义的标志,所以定义一个新的。
你可以touch一个文件并测试它的存在性,或者总是写0或1到一个文件,定义一个由os.getenv( ... )读取的env变量,接受一个sys.argv选项,定义一个全局变量。你有一个图灵机供你使用。可能性是无限的。

tez616oj

tez616oj2#

我的情况是我想知道settings.DEBUG是否设置为True。
如果我用途:

class MyTestCase(TestCase):
    def test_01(self):
        from django.conf import settings
        print(settings.DEBUG)

无论我实际设置什么,输出总是False。
该文档告诉我们原因:https://docs.djangoproject.com/en/4.1/topics/testing/overview/#other-test-conditions
但在我的情况下,我们可以有另一种选择来读取设置:

class MyTestCase(TestCase):
    def test_01(self):
        import importlib
        raw_settings = importlib.import_module(os.environ.get('DJANGO_SETTINGS_MODULE'))
        print(raw_settings.DEBUG)

这样,我们就可以避开这个问题.

相关问题