Skip to content

Commit 36f3b89

Browse files
committed
adding pytest for commons
1 parent ad0fea3 commit 36f3b89

5 files changed

Lines changed: 363 additions & 92 deletions

File tree

tests/_test_netsim.py

Lines changed: 0 additions & 18 deletions
This file was deleted.

tests/_test_netsim_wrapper.py

Lines changed: 0 additions & 17 deletions
This file was deleted.

tests/test_nwrap.py

Lines changed: 0 additions & 57 deletions
This file was deleted.

tests/test_nwrap_common.py

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
"""
2+
Usage nwrap template create [network | device] [yaml | json] [<fileName>]
3+
template load <fileName> [<username> <password>]
4+
download <username> <password> link
5+
delete-devices <DeviceNames>
6+
-v | --version
7+
-vv | --verbose
8+
-h | --help
9+
10+
nwrap is an alias of `netsim-wrapper` and you can pass
11+
multiple devnames instead of single devname, eg. start, stop, ...
12+
13+
Additionally we support all `ncs-netsim` commands
14+
"""
15+
16+
import gc
17+
import sys
18+
import pytest
19+
import unittest
20+
21+
from logging import DEBUG, INFO
22+
from netsim_wrapper import main
23+
from netsim_wrapper.nwrap import NWrap
24+
25+
from _pytest.monkeypatch import MonkeyPatch
26+
27+
28+
# @pytest.mark.run
29+
class TestNwrapCommon(unittest.TestCase):
30+
31+
def setUp(self):
32+
self.monkeypatch = MonkeyPatch()
33+
self.args = ['nwrap']
34+
35+
def tearDown(self) -> None:
36+
gc.collect()
37+
self.monkeypatch.undo()
38+
return super().tearDown()
39+
40+
@property
41+
def applyPatch(self):
42+
self.monkeypatch.setattr(sys, 'argv', self.args)
43+
44+
@pytest.fixture(autouse=True)
45+
def inject_fixtures(self, capfd):
46+
self._capfd = capfd
47+
48+
def test_nwrap_version(self):
49+
self.args.append('-v')
50+
self.applyPatch
51+
try:
52+
main.nwrap()
53+
except SystemExit as e:
54+
assert type(e) == SystemExit
55+
finally:
56+
out, err = self._capfd.readouterr()
57+
assert out.strip() == 'netsim-wrapper version 4.0.0'
58+
59+
def test_nwrap_long_version(self):
60+
self.args.append('--version')
61+
self.applyPatch
62+
try:
63+
main.nwrap()
64+
except SystemExit as e:
65+
assert type(e) == SystemExit
66+
finally:
67+
out, err = self._capfd.readouterr()
68+
assert out.strip() == 'netsim-wrapper version 4.0.0'
69+
70+
def test_nwrap(self):
71+
self.applyPatch
72+
try:
73+
main.nwrap()
74+
except SystemExit as e:
75+
assert type(e) == SystemExit
76+
finally:
77+
out, err = self._capfd.readouterr()
78+
out = out.strip()
79+
assert 'Usage nwrap template create' in out
80+
assert 'template create [network | device] [yaml | json] [<fileName>]' in out
81+
assert 'template load <fileName> [<username> <password>]' in out
82+
assert 'download <username> <password> link' in out
83+
assert 'delete-devices <DeviceNames>' in out
84+
assert '-v | --version' in out
85+
assert '-vv | --verbose' in out
86+
assert '-h | --help' in out
87+
88+
def test_nwrap_help(self):
89+
self.args.append('-h')
90+
self.applyPatch
91+
try:
92+
main.nwrap()
93+
except SystemExit as e:
94+
assert type(e) == SystemExit
95+
finally:
96+
out, err = self._capfd.readouterr()
97+
out = out.strip()
98+
assert 'Usage nwrap template create' in out
99+
100+
def test_nwrap_long_help(self):
101+
self.args.append('--help')
102+
self.applyPatch
103+
try:
104+
main.nwrap()
105+
except SystemExit as e:
106+
assert type(e) == SystemExit
107+
finally:
108+
out, err = self._capfd.readouterr()
109+
out = out.strip()
110+
assert 'Usage nwrap template create' in out
111+
112+
113+
# @pytest.mark.run
114+
class TestNwrapVerbose(unittest.TestCase):
115+
116+
def setUp(self):
117+
gc.collect()
118+
self.monkeypatch = MonkeyPatch()
119+
self.args = ['nwrap']
120+
121+
def tearDown(self) -> None:
122+
self.monkeypatch.undo()
123+
return super().tearDown()
124+
125+
@property
126+
def applyPatch(self):
127+
self.monkeypatch.setattr(sys, 'argv', self.args)
128+
129+
@pytest.fixture(autouse=True)
130+
def inject_fixtures(self, capfd):
131+
self._capfd = capfd
132+
133+
def test_nwrap_verbose(self):
134+
self.args.append('-vv')
135+
self.applyPatch
136+
nwrap, p = main.check_verbose(self.args)
137+
assert nwrap.log.level == INFO # DEBUG
138+
# TODO: We logger level is getting set to INFO due to singleton objects
139+
140+
def test_nwrap_long_verbose(self):
141+
self.args.append('--verbose')
142+
self.applyPatch
143+
nwrap, p = main.check_verbose(self.args)
144+
assert nwrap.log.level == INFO # DEBUG
145+
# TODO: We logger level is getting set to INFO due to singleton objects

0 commit comments

Comments
 (0)