Skip to content

Commit e5cc752

Browse files
committed
add test case
1 parent dd31355 commit e5cc752

File tree

3 files changed

+152
-1
lines changed

3 files changed

+152
-1
lines changed

dynaconf-sample/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,5 @@ $ pip install --upgrade pip && \
3333
```bash
3434
# unit test
3535
$ export PYTHONPATH=.
36-
$ pytest tests/test_config.py -s
36+
$ pytest
3737
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
"""https://github.com/dynaconf/dynaconf/blob/master/tests/test_envvar_prefix.py
2+
"""
3+
from __future__ import annotations
4+
5+
import os
6+
7+
import pytest
8+
9+
from dynaconf import LazySettings
10+
11+
TOML = """
12+
[global]
13+
var = "my value"
14+
[false]
15+
thisvar = "should not be set"
16+
"""
17+
18+
19+
def test_envvar_prefix_lazysettings(tmpdir):
20+
os.environ["DYNACONF_PREFIXED_VAR"] = "this is prefixed"
21+
tmpfile = tmpdir.mkdir("sub").join("test_no_envvar_prefix.toml")
22+
tmpfile.write(TOML)
23+
24+
settings = LazySettings(
25+
environments=True,
26+
envvar_prefix=False,
27+
settings_file=str(tmpfile),
28+
)
29+
30+
assert settings.VAR == "my value"
31+
assert settings.DYNACONF_PREFIXED_VAR == "this is prefixed"
32+
33+
34+
def test_envvar_prefix_false_from_envvar(tmpdir):
35+
os.environ["DYNACONF_PREFIXED_VAR"] = "this is prefixed"
36+
os.environ["ENVVAR_PREFIX_FOR_DYNACONF"] = "false"
37+
tmpfile = tmpdir.mkdir("sub").join("test_no_envvar_prefix.toml")
38+
tmpfile.write(TOML)
39+
40+
settings = LazySettings(environments=True, settings_file=str(tmpfile))
41+
42+
assert settings.VAR == "my value"
43+
assert settings.DYNACONF_PREFIXED_VAR == "this is prefixed"
44+
45+
with pytest.raises(AttributeError):
46+
assert settings.THISVAR == "should not be set"
47+
del os.environ["ENVVAR_PREFIX_FOR_DYNACONF"]
+104
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
"""https://github.com/dynaconf/dynaconf/blob/master/tests/test_yaml_loader.py
2+
"""
3+
from __future__ import annotations
4+
5+
import os
6+
7+
import pytest
8+
9+
from dynaconf import LazySettings
10+
from dynaconf.loaders.yaml_loader import load
11+
12+
13+
settings = LazySettings(
14+
environments=True,
15+
ENV_FOR_DYNACONF="PRODUCTION",
16+
ROOT_PATH_FOR_DYNACONF=os.path.dirname(os.path.abspath(__file__)),
17+
)
18+
19+
20+
YAML = """
21+
# the bellow is just to ensure `,` will not break string YAML
22+
default:
23+
password: 99999
24+
host: server.com
25+
port: 8080
26+
alist:
27+
- item1
28+
- item2
29+
- 23
30+
service:
31+
url: service.com
32+
port: 80
33+
auth:
34+
password: qwerty
35+
test: 1234
36+
development:
37+
password: 88888
38+
host: devserver.com
39+
production:
40+
password: 11111
41+
host: prodserver.com
42+
global:
43+
global_value: global
44+
"""
45+
46+
YAML2 = """
47+
global:
48+
# @float casting not needed, used only for testing
49+
secret: '@float 42'
50+
password: 123456
51+
host: otheryaml.com
52+
"""
53+
54+
YAMLS = [YAML, YAML2]
55+
56+
57+
def test_load_from_yaml():
58+
"""Assert loads from YAML string"""
59+
load(settings, filename=YAML)
60+
assert settings.HOST == "prodserver.com"
61+
assert settings.PORT == 8080
62+
assert settings.ALIST == ["item1", "item2", 23]
63+
assert settings.SERVICE["url"] == "service.com"
64+
assert settings.SERVICE.url == "service.com"
65+
assert settings.SERVICE.port == 80
66+
assert settings.SERVICE.auth.password == "qwerty"
67+
assert settings.SERVICE.auth.test == 1234
68+
load(settings, filename=YAML, env="DEVELOPMENT")
69+
assert settings.HOST == "devserver.com"
70+
load(settings, filename=YAML)
71+
assert settings.HOST == "prodserver.com"
72+
73+
def test_load_from_multiple_yaml():
74+
"""Assert loads from YAML string"""
75+
load(settings, filename=YAMLS)
76+
assert settings.HOST == "otheryaml.com"
77+
assert settings.PASSWORD == 123456
78+
assert settings.SECRET == 42.0
79+
assert settings.PORT == 8080
80+
assert settings.SERVICE["url"] == "service.com"
81+
assert settings.SERVICE.url == "service.com"
82+
assert settings.SERVICE.port == 80
83+
assert settings.SERVICE.auth.password == "qwerty"
84+
assert settings.SERVICE.auth.test == 1234
85+
load(settings, filename=YAMLS, env="DEVELOPMENT")
86+
assert settings.PORT == 8080
87+
assert settings.HOST == "otheryaml.com"
88+
load(settings, filename=YAMLS)
89+
assert settings.HOST == "otheryaml.com"
90+
assert settings.PASSWORD == 123456
91+
load(settings, filename=YAML, env="DEVELOPMENT")
92+
assert settings.PORT == 8080
93+
assert settings.HOST == "devserver.com"
94+
load(settings, filename=YAML)
95+
assert settings.HOST == "prodserver.com"
96+
assert settings.PASSWORD == 11111
97+
98+
def test_yaml_key_overriding(tmpdir):
99+
# export DYNACONF_ALIST='@json ["item1", "item2", "item3", 123]'
100+
os.environ["DYNACONF_ALIST"] = '@json ["item1", "item2", "item3", 123]'
101+
tmpfile = tmpdir.mkdir("sub").join("test_yaml_key_overriding.yaml")
102+
tmpfile.write(YAML)
103+
config = LazySettings(environments=True, settings_file=str(tmpfile))
104+
assert config.ALIST == ["item1", "item2", "item3", 123]

0 commit comments

Comments
 (0)