55@description: 测试 settings
66"""
77
8+ import os .path
9+ import time
10+ from datetime import datetime
11+
812import pytest
913
1014
@@ -26,3 +30,67 @@ def test_lazy_settings():
2630 settings .exp_colors = ("green" , "yellow" )
2731 with pytest .raises (ValueError , match = "description can only be set once" ):
2832 settings .description = "test description 2"
33+
34+
35+ def test_settings ():
36+ """
37+ 主要测试 settings 初始化时遇见相同文件夹自动创建新文件夹的功能
38+ """
39+ from swankit .core .settings import SwanLabSharedSettings
40+ from tutils import TEMP_DIR
41+
42+ # 测试创建文件夹
43+ # 尽量保持代码运行在一秒的开始
44+ time .sleep (1 - (time .time () % 1 )) # 确保时间戳在整秒
45+ start = time .time ()
46+ run_id = "111111"
47+ run_dir = os .path .join (TEMP_DIR , "run-{}-{}" .format (datetime .now ().strftime ("%Y%m%d_%H%M%S" ), run_id ))
48+ settings = SwanLabSharedSettings (logdir = TEMP_DIR , run_id = run_id , version = "develop" , should_save = True )
49+ assert time .time () - start < 1 # 此时不应该等待一秒
50+ assert settings .run_dir == run_dir
51+ assert settings .run_id == run_id
52+
53+ # 测试创建同名文件夹
54+ # 尽量保持代码运行在一秒的开始
55+ time .sleep (1 - (time .time () % 1 )) # 确保时间戳在整秒
56+ start = time .time ()
57+ # 测试创建一个存在的文件夹
58+ run_id = "123456"
59+ run_dir = os .path .join (TEMP_DIR , "run-{}-{}" .format (datetime .now ().strftime ("%Y%m%d_%H%M%S" ), run_id ))
60+ os .mkdir (run_dir )
61+ settings = SwanLabSharedSettings (logdir = TEMP_DIR , run_id = run_id , version = "develop" , should_save = True )
62+ assert 2 > time .time () - start >= 1 # 确保至少等待了一秒
63+ assert settings .run_dir != run_dir # 确保没有使用原来的文件夹
64+ assert settings .run_id == run_id # 确保run_id正确
65+
66+
67+ def test_settings_no_save ():
68+ """
69+ 测试不保存的情况,此时不会检查文件夹唯一性
70+ """
71+ from swankit .core .settings import SwanLabSharedSettings
72+ from tutils import TEMP_DIR
73+
74+ # 测试创建文件夹
75+ # 尽量保持代码运行在一秒的开始
76+ time .sleep (1 - (time .time () % 1 )) # 确保时间戳在整秒
77+ start = time .time ()
78+ run_id = "111111"
79+ run_dir = os .path .join (TEMP_DIR , "run-{}-{}" .format (datetime .now ().strftime ("%Y%m%d_%H%M%S" ), run_id ))
80+ settings = SwanLabSharedSettings (logdir = TEMP_DIR , run_id = run_id , version = "develop" , should_save = False )
81+ assert time .time () - start < 1 # 此时不应该等待一秒
82+ assert settings .run_dir == run_dir
83+ assert settings .run_id == run_id
84+
85+ # 测试创建同名文件夹
86+ # 尽量保持代码运行在一秒的开始
87+ time .sleep (1 - (time .time () % 1 )) # 确保时间戳在整秒
88+ start = time .time ()
89+ # 测试创建一个存在的文件夹
90+ run_id = "123456"
91+ run_dir = os .path .join (TEMP_DIR , "run-{}-{}" .format (datetime .now ().strftime ("%Y%m%d_%H%M%S" ), run_id ))
92+ os .mkdir (run_dir )
93+ settings = SwanLabSharedSettings (logdir = TEMP_DIR , run_id = run_id , version = "develop" , should_save = False )
94+ assert time .time () - start < 1 # 此时不应该等待一秒
95+ assert settings .run_dir == run_dir
96+ assert settings .run_id == run_id
0 commit comments