Skip to content

Commit a97bcc1

Browse files
committed
Convert redfish tests to pytest
This commit replaces the use of unittest with the constructs from pytest. We started off using unittest, but then we'd introduce parametrization, which wouldn't work because the mix with unit test caused parametrization to get lost. Now we use mainly the equivalent pytest constructs.
1 parent 1537347 commit a97bcc1

1 file changed

Lines changed: 110 additions & 109 deletions

File tree

tests/test_redfish.py

Lines changed: 110 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# coding: utf-8
22
# Unit tests for the Redfish API
3-
from unittest import mock, TestCase
3+
import pytest
4+
from unittest import mock
45

56
from redfish_client.root import Root
67
from wrapanapi.exceptions import InvalidValueException
@@ -20,7 +21,7 @@ def test_connect_ssl(self, mock_connector):
2021
mock_connector.assert_called_with("https://dummy:443/", "user", "pass")
2122

2223

23-
class RedfishTestCase(TestCase):
24+
class RedfishTestCase():
2425
def mock_redfish_system(self, mock_connector, data):
2526
def mock_get(url):
2627
res = mock.Mock()
@@ -36,31 +37,36 @@ def mock_get(url):
3637
api_client=api_client)
3738
return rf
3839

40+
def setup_method(self, method):
41+
self.patcher = mock.patch("redfish_client.Connector")
42+
ConnectorMockClass = self.patcher.start()
43+
self.mock_connector = ConnectorMockClass()
44+
45+
def teardown_method(self, method):
46+
self.patcher.stop()
47+
3948

40-
@mock.patch("redfish_client.Connector")
4149
class TestRedfishSystem(RedfishTestCase):
42-
def test_find_resource(self, mock_connector):
43-
rf = self.mock_redfish_system(mock_connector, data={
50+
def test_find_resource(self):
51+
rf = self.mock_redfish_system(self.mock_connector, data={
4452
"/redfish/v1/BlankResource": {
4553
"@odata.id": "id"
4654
}
4755
})
4856
resource = rf.find("/redfish/v1/BlankResource")
49-
self.assertEqual(resource.raw, {"@odata.id": "id"})
57+
assert resource.raw == {"@odata.id": "id"}
5058

51-
def test_redfish_system(self, mock_connector):
52-
rf = self.mock_redfish_system(mock_connector, data={
59+
def test_redfish_system(self):
60+
rf = self.mock_redfish_system(self.mock_connector, data={
5361
"/redfish/v1/BlankResource": {
5462
"@odata.id": "id"
5563
}
5664
})
57-
self.assertEqual(rf._identifying_attrs,
58-
{"url": "http://dummy:8000/"})
59-
self.assertEqual(rf.info(),
60-
"RedfishSystem url=http://dummy:8000/")
65+
assert rf._identifying_attrs == {"url": "http://dummy:8000/"}
66+
assert rf.info() == "RedfishSystem url=http://dummy:8000/"
6167

62-
def test_num_servers(self, mock_connector):
63-
rf = self.mock_redfish_system(mock_connector, data={
68+
def test_num_servers(self):
69+
rf = self.mock_redfish_system(self.mock_connector, data={
6470
"/redfish/v1": {
6571
"Systems": {
6672
"@odata.id": "/redfish/v1/Systems"
@@ -83,10 +89,10 @@ def test_num_servers(self, mock_connector):
8389
"Name": "ComputerSystemCollection",
8490
"Description": "A Collection of ComputerSystem resource instances."}
8591
})
86-
self.assertEqual(rf.num_servers, 4)
92+
assert rf.num_servers == 4
8793

88-
def test_num_chassis(self, mock_connector):
89-
rf = self.mock_redfish_system(mock_connector, data={
94+
def test_num_chassis(self):
95+
rf = self.mock_redfish_system(self.mock_connector, data={
9096
"/redfish/v1": {
9197
"Chassis": {
9298
"@odata.id": "/redfish/v1/Chassis"
@@ -135,10 +141,10 @@ def test_num_chassis(self, mock_connector):
135141
"ChassisType": "Sled",
136142
},
137143
})
138-
self.assertEqual(rf.num_chassis, 4)
144+
assert rf.num_chassis == 4
139145

140-
def test_num_racks(self, mock_connector):
141-
rf = self.mock_redfish_system(mock_connector, data={
146+
def test_num_racks(self):
147+
rf = self.mock_redfish_system(self.mock_connector, data={
142148
"/redfish/v1": {
143149
"Chassis": {
144150
"@odata.id": "/redfish/v1/Chassis"
@@ -187,49 +193,49 @@ def test_num_racks(self, mock_connector):
187193
"ChassisType": "Sled",
188194
},
189195
})
190-
self.assertEqual(rf.num_racks, 2)
196+
assert rf.num_racks == 2
191197

192-
def test_get_server(self, mock_connector):
193-
rf = self.mock_redfish_system(mock_connector, data={
198+
def test_get_server(self):
199+
rf = self.mock_redfish_system(self.mock_connector, data={
194200
"/redfish/v1/Systems/System-1-2-1-1": {
195201
"@odata.id": "/redfish/v1/Systems/System-1-2-1-1",
196202
}
197203
})
198204
rf_server = rf.get_server("/redfish/v1/Systems/System-1-2-1-1")
199-
self.assertEqual(type(rf_server), RedfishServer)
205+
assert type(rf_server) == RedfishServer
200206

201-
def test_get_chassis(self, mock_connector):
202-
rf = self.mock_redfish_system(mock_connector, data={
207+
def test_get_chassis(self):
208+
rf = self.mock_redfish_system(self.mock_connector, data={
203209
"/redfish/v1/Chassis/Sled-1-2-1": {
204210
"@odata.id": "/redfish/v1/Chassis/Sled-1-2-1",
205211
}
206212
})
207213
rf_chassis = rf.get_chassis("/redfish/v1/Chassis/Sled-1-2-1")
208-
self.assertEqual(type(rf_chassis), RedfishChassis)
214+
assert type(rf_chassis) == RedfishChassis
209215

210-
def test_get_rack(self, mock_connector):
211-
rf = self.mock_redfish_system(mock_connector, data={
216+
def test_get_rack(self):
217+
rf = self.mock_redfish_system(self.mock_connector, data={
212218
"/redfish/v1/Chassis/Rack-1": {
213219
"@odata.id": "/redfish/v1/Chassis/Rack-1",
214220
"ChassisType": "Rack",
215221
}
216222
})
217223
rf_rack = rf.get_rack("/redfish/v1/Chassis/Rack-1")
218-
self.assertEqual(type(rf_rack), RedfishRack)
224+
assert type(rf_rack) == RedfishRack
219225

220-
def test_get_rack_bad(self, mock_connector):
221-
rf = self.mock_redfish_system(mock_connector, data={
226+
def test_get_rack_bad(self):
227+
rf = self.mock_redfish_system(self.mock_connector, data={
222228
"/redfish/v1/Chassis/Sled-1-2-1": {
223229
"@odata.id": "/redfish/v1/Chassis/Sled-1-2-1",
224230
"ChassisType": "Sled",
225231
}
226232
})
227-
with self.assertRaises(InvalidValueException,
228-
msg="Chassis type Sled does not match that of a Rack"):
233+
with pytest.raises(InvalidValueException) as e:
229234
rf.get_rack("/redfish/v1/Chassis/Sled-1-2-1")
235+
assert e == "Chassis type Sled does not match that of a Rack"
230236

231-
def test_server_stats_inventory(self, mock_connector):
232-
rf = self.mock_redfish_system(mock_connector, data={
237+
def test_server_stats_inventory(self):
238+
rf = self.mock_redfish_system(self.mock_connector, data={
233239
"/redfish/v1/Systems/System-1-2-1-1": {
234240
"@odata.id": "/redfish/v1/Systems/System-1-2-1-1",
235241
"Description": "A server",
@@ -265,13 +271,13 @@ def test_server_stats_inventory(self, mock_connector):
265271
# "num_network_devices", "num_storage_devices"
266272
]
267273
requested_inventory = ["power_state"]
268-
self.assertEqual(rf.server_stats(physical_server, requested_stats),
269-
{"cores_capacity": 20, "memory_capacity": 32768})
270-
self.assertEqual(rf.server_inventory(physical_server, requested_inventory),
271-
{"power_state": "on"})
274+
assert (rf.server_stats(physical_server, requested_stats) == {
275+
"cores_capacity": 20, "memory_capacity": 32768})
276+
assert (rf.server_inventory(physical_server, requested_inventory) == {
277+
"power_state": "on"})
272278

273-
def test_rack_stats_inventory(self, mock_connector):
274-
rf = self.mock_redfish_system(mock_connector, data={
279+
def test_rack_stats_inventory(self):
280+
rf = self.mock_redfish_system(self.mock_connector, data={
275281
"/redfish/v1/Chassis/Rack-1": {
276282
"@odata.id": "/redfish/v1/Chassis/Rack-1",
277283
"ChassisType": "Rack",
@@ -294,13 +300,12 @@ def test_rack_stats_inventory(self, mock_connector):
294300
physical_rack.ems_ref = "/redfish/v1/Chassis/Rack-1"
295301
requested_stats = []
296302
requested_inventory = ["rack_name"]
297-
self.assertEqual(rf.rack_stats(physical_rack, requested_stats),
298-
{})
299-
self.assertEqual(rf.rack_inventory(physical_rack, requested_inventory),
300-
{"rack_name": "Rack-1"})
303+
assert rf.rack_stats(physical_rack, requested_stats) == {}
304+
assert (rf.rack_inventory(physical_rack, requested_inventory) == {
305+
"rack_name": "Rack-1"})
301306

302-
def test_chassis_stats_inventory(self, mock_connector):
303-
rf = self.mock_redfish_system(mock_connector, data={
307+
def test_chassis_stats_inventory(self):
308+
rf = self.mock_redfish_system(self.mock_connector, data={
304309
"/redfish/v1/Chassis/Sled-1-2-1": {
305310
"@odata.id": "/redfish/v1/Chassis/Sled-1-2-1",
306311
"ChassisType": "Sled",
@@ -326,18 +331,17 @@ def test_chassis_stats_inventory(self, mock_connector):
326331
phsyical_chassis.ems_ref = "/redfish/v1/Chassis/Sled-1-2-1"
327332
requested_stats = ["num_physical_servers"]
328333
requested_inventory = ["chassis_name", "description", "identify_led_state"]
329-
self.assertEqual(rf.chassis_stats(phsyical_chassis, requested_stats),
330-
{"num_physical_servers": 2})
331-
self.assertEqual(rf.chassis_inventory(phsyical_chassis, requested_inventory),
332-
{"chassis_name": "Dell G5_Sled (5555A)",
333-
"description": "G5 Sled-Level Enclosure",
334-
"identify_led_state": "Blinking"})
334+
assert (rf.chassis_stats(phsyical_chassis, requested_stats) == {
335+
"num_physical_servers": 2})
336+
assert (rf.chassis_inventory(phsyical_chassis, requested_inventory) == {
337+
"chassis_name": "Dell G5_Sled (5555A)",
338+
"description": "G5 Sled-Level Enclosure",
339+
"identify_led_state": "Blinking"})
335340

336341

337-
@mock.patch("redfish_client.Connector")
338342
class TestRedfishServer(RedfishTestCase):
339-
def test_server_simple_properties(self, mock_connector):
340-
rf = self.mock_redfish_system(mock_connector, data={
343+
def test_server_simple_properties(self):
344+
rf = self.mock_redfish_system(self.mock_connector, data={
341345
"/redfish/v1/Systems/System-1-2-1-1": {
342346
"@odata.id": "/redfish/v1/Systems/System-1-2-1-1",
343347
"Description": "A server",
@@ -349,15 +353,14 @@ def test_server_simple_properties(self, mock_connector):
349353
}
350354
})
351355
rf_server = rf.get_server("/redfish/v1/Systems/System-1-2-1-1")
352-
self.assertEqual(rf_server.name, "Dell Inc. System (945hjf0927mf)")
353-
self.assertEqual(rf_server.description, "A server")
354-
self.assertEqual(rf_server.state, "On")
355-
self.assertEqual(rf_server._identifying_attrs,
356-
{"odata_id": "/redfish/v1/Systems/System-1-2-1-1"})
357-
self.assertEqual(rf_server.uuid(), "System-1-2-1-1")
358-
359-
def test_server_complex_properties(self, mock_connector):
360-
rf = self.mock_redfish_system(mock_connector, data={
356+
assert rf_server.name == "Dell Inc. System (945hjf0927mf)"
357+
assert rf_server.description == "A server"
358+
assert rf_server.state == "On"
359+
assert rf_server._identifying_attrs == {"odata_id": "/redfish/v1/Systems/System-1-2-1-1"}
360+
assert rf_server.uuid() == "System-1-2-1-1"
361+
362+
def test_server_complex_properties(self):
363+
rf = self.mock_redfish_system(self.mock_connector, data={
361364
"/redfish/v1/Systems/System-1-2-1-1": {
362365
"@odata.id": "/redfish/v1/Systems/System-1-2-1-1",
363366
"Description": "A server",
@@ -388,18 +391,18 @@ def test_server_complex_properties(self, mock_connector):
388391
}
389392
})
390393
rf_server = rf.get_server("/redfish/v1/Systems/System-1-2-1-1")
391-
self.assertEqual(rf_server.server_cores, 20)
392-
self.assertEqual(rf_server.server_memory, 32768)
393-
self.assertEqual(rf_server.state, "On")
394-
self.assertEqual(rf_server._get_state(), ServerState.ON)
395-
self.assertTrue(rf_server.is_on)
396-
self.assertFalse(rf_server.is_off)
397-
self.assertFalse(rf_server.is_powering_on)
398-
self.assertFalse(rf_server.is_powering_off)
399-
self.assertEqual(rf_server.machine_type, "x86-64")
400-
self.assertEqual(rf_server.product_name, "System")
401-
402-
def test_server_power_states(self, mock_connector):
394+
assert rf_server.server_cores == 20
395+
assert rf_server.server_memory == 32768
396+
assert rf_server.state == "On"
397+
assert rf_server._get_state() == ServerState.ON
398+
assert rf_server.is_on
399+
assert not rf_server.is_off
400+
assert not rf_server.is_powering_on
401+
assert not rf_server.is_powering_off
402+
assert rf_server.machine_type == "x86-64"
403+
assert rf_server.product_name == "System"
404+
405+
def test_server_power_states(self):
403406
# string,
404407
# is_on, is_off, is_powering_on, is_powering_off
405408
test_data = {
@@ -414,21 +417,21 @@ def test_server_power_states(self, mock_connector):
414417
}
415418

416419
for str_state, states in test_data.items():
417-
rf = self.mock_redfish_system(mock_connector, data={
420+
rf = self.mock_redfish_system(self.mock_connector, data={
418421
"/redfish/v1/Systems/System-1-2-1-1": {
419422
"@odata.id": "/redfish/v1/Systems/System-1-2-1-1",
420423
"PowerState": str_state,
421424
}
422425
})
423426
rf_server = rf.get_server("/redfish/v1/Systems/System-1-2-1-1")
424-
self.assertEqual(rf_server.is_on, states[0])
425-
self.assertEqual(rf_server.is_off, states[1])
426-
self.assertEqual(rf_server.is_powering_on, states[2])
427-
self.assertEqual(rf_server.is_powering_off, states[3])
428-
self.assertEqual(rf_server._get_state(), states[4])
429-
430-
def test_server_name_no_sn(self, mock_connector):
431-
rf = self.mock_redfish_system(mock_connector, data={
427+
assert rf_server.is_on == states[0]
428+
assert rf_server.is_off == states[1]
429+
assert rf_server.is_powering_on == states[2]
430+
assert rf_server.is_powering_off == states[3]
431+
assert rf_server._get_state() == states[4]
432+
433+
def test_server_name_no_sn(self):
434+
rf = self.mock_redfish_system(self.mock_connector, data={
432435
"/redfish/v1/Systems/System-1-2-1-1": {
433436
"@odata.id": "/redfish/v1/Systems/System-1-2-1-1",
434437
"Id": "System-1-2-1-1",
@@ -437,13 +440,12 @@ def test_server_name_no_sn(self, mock_connector):
437440
}
438441
})
439442
rf_server = rf.get_server("/redfish/v1/Systems/System-1-2-1-1")
440-
self.assertEqual(rf_server.name, "Dell Inc. System")
443+
assert rf_server.name == "Dell Inc. System"
441444

442445

443-
@mock.patch("redfish_client.Connector")
444446
class TestRedfishChassis(RedfishTestCase):
445-
def test_get_chassis_properties(self, mock_connector):
446-
rf = self.mock_redfish_system(mock_connector, data={
447+
def test_get_chassis_properties(self):
448+
rf = self.mock_redfish_system(self.mock_connector, data={
447449
"/redfish/v1/Chassis/Sled-1-2-1": {
448450
"@odata.id": "/redfish/v1/Chassis/Sled-1-2-1",
449451
"ChassisType": "Sled",
@@ -466,17 +468,16 @@ def test_get_chassis_properties(self, mock_connector):
466468
}
467469
})
468470
rf_chassis = rf.get_chassis("/redfish/v1/Chassis/Sled-1-2-1")
469-
self.assertEqual(rf_chassis.chassis_type, "Sled")
470-
self.assertEqual(rf_chassis.name, "Dell G5_Sled (5555A)")
471-
self.assertEqual(rf_chassis.description, "G5 Sled-Level Enclosure")
472-
self.assertEqual(rf_chassis.led_state, "Blinking")
473-
self.assertEqual(rf_chassis._identifying_attrs,
474-
{"odata_id": "/redfish/v1/Chassis/Sled-1-2-1"})
475-
self.assertEqual(rf_chassis.uuid(), "Sled-1-2-1")
476-
self.assertEqual(rf_chassis.num_servers, 2)
477-
478-
def test_get_rack_properties(self, mock_connector):
479-
rf = self.mock_redfish_system(mock_connector, data={
471+
assert rf_chassis.chassis_type == "Sled"
472+
assert rf_chassis.name == "Dell G5_Sled (5555A)"
473+
assert rf_chassis.description == "G5 Sled-Level Enclosure"
474+
assert rf_chassis.led_state == "Blinking"
475+
assert rf_chassis._identifying_attrs == {"odata_id": "/redfish/v1/Chassis/Sled-1-2-1"}
476+
assert rf_chassis.uuid() == "Sled-1-2-1"
477+
assert rf_chassis.num_servers == 2
478+
479+
def test_get_rack_properties(self):
480+
rf = self.mock_redfish_system(self.mock_connector, data={
480481
"/redfish/v1/Chassis/Rack-1": {
481482
"@odata.id": "/redfish/v1/Chassis/Rack-1",
482483
"ChassisType": "Rack",
@@ -496,11 +497,11 @@ def test_get_rack_properties(self, mock_connector):
496497
}
497498
})
498499
rf_rack = rf.get_rack("/redfish/v1/Chassis/Rack-1")
499-
self.assertEqual(rf_rack.chassis_type, "Rack")
500-
self.assertEqual(rf_rack.name, "Rack-1")
501-
self.assertEqual(rf_rack.description, "Redfish Rack")
502-
self.assertEqual(rf_rack.uuid(), "Rack-1")
503-
self.assertEqual(rf_rack._identifying_attrs, {"odata_id":
500+
assert rf_rack.chassis_type == "Rack"
501+
assert rf_rack.name == "Rack-1"
502+
assert rf_rack.description == "Redfish Rack"
503+
assert rf_rack.uuid() == "Rack-1"
504+
assert (rf_rack._identifying_attrs == {"odata_id":
504505
"/redfish/v1/Chassis/Rack-1"})
505-
self.assertEqual(rf_rack.led_state, "Blinking")
506-
self.assertEqual(rf_rack.num_servers, 1)
506+
assert rf_rack.led_state == "Blinking"
507+
assert rf_rack.num_servers == 1

0 commit comments

Comments
 (0)