1212
1313"""Tests for pubchem.py."""
1414
15- import unittest
16- from unittest .mock import patch
17-
1815import numpy
1916import pytest
2017import pubchempy
@@ -79,24 +76,24 @@ def mock_get_compounds(name, searchtype, record_type='2d'):
7976
8077
8178@using_pubchempy
82- class OpenFermionPubChemTest ( unittest . TestCase ) :
79+ class TestOpenFermionPubChem :
8380
84- @ patch ( 'pubchempy.get_compounds' , mock_get_compounds )
85- def test_water ( self ):
81+ def test_water ( self , monkeypatch ):
82+ monkeypatch . setattr ( pubchempy , 'get_compounds' , mock_get_compounds )
8683 water_geometry = geometry_from_pubchem ('water' )
87- self . water_natoms = len (water_geometry )
88- self . water_atoms = [water_atom [0 ] for water_atom in water_geometry ]
89- water_oxygen_index = self . water_atoms .index ('O' )
84+ water_natoms_actual = len (water_geometry )
85+ water_atoms = [water_atom [0 ] for water_atom in water_geometry ]
86+ water_oxygen_index = water_atoms .index ('O' )
9087 water_oxygen = water_geometry .pop (water_oxygen_index )
9188 water_oxygen_coordinate = numpy .array (water_oxygen [1 ])
9289 water_hydrogen1_coordinate = numpy .array (water_geometry [0 ][1 ])
9390 water_hydrogen2_coordinate = numpy .array (water_geometry [1 ][1 ])
9491 water_oxygen_hydrogen1 = water_hydrogen1_coordinate - water_oxygen_coordinate
9592 water_oxygen_hydrogen2 = water_hydrogen2_coordinate - water_oxygen_coordinate
9693
97- self . water_bond_length_1 = numpy .linalg .norm (water_oxygen_hydrogen1 )
98- self . water_bond_length_2 = numpy .linalg .norm (water_oxygen_hydrogen2 )
99- self . water_bond_angle = numpy .arccos (
94+ water_bond_length_1 = numpy .linalg .norm (water_oxygen_hydrogen1 )
95+ water_bond_length_2 = numpy .linalg .norm (water_oxygen_hydrogen2 )
96+ water_bond_angle = numpy .arccos (
10097 numpy .dot (
10198 water_oxygen_hydrogen1 ,
10299 water_oxygen_hydrogen2
@@ -108,51 +105,51 @@ def test_water(self):
108105 )
109106
110107 water_natoms = 3
111- self . assertEqual ( water_natoms , self . water_natoms )
108+ assert water_natoms == water_natoms_actual
112109
113- self . assertAlmostEqual ( self . water_bond_length_1 , self . water_bond_length_2 , places = 4 )
110+ assert water_bond_length_1 == pytest . approx ( water_bond_length_2 , abs = 1e- 4 )
114111 water_bond_length_low = 0.9
115112 water_bond_length_high = 1.1
116- self . assertTrue ( water_bond_length_low <= self . water_bond_length_1 )
117- self . assertTrue ( water_bond_length_high >= self . water_bond_length_1 )
113+ assert water_bond_length_low <= water_bond_length_1
114+ assert water_bond_length_high >= water_bond_length_1
118115
119116 water_bond_angle_low = 100.0 / 360 * 2 * numpy .pi
120117 water_bond_angle_high = 110.0 / 360 * 2 * numpy .pi
121- self . assertTrue ( water_bond_angle_low <= self . water_bond_angle )
122- self . assertTrue ( water_bond_angle_high >= self . water_bond_angle )
118+ assert water_bond_angle_low <= water_bond_angle
119+ assert water_bond_angle_high >= water_bond_angle
123120
124- @ patch ( 'pubchempy.get_compounds' , mock_get_compounds )
125- def test_helium ( self ):
121+ def test_helium ( self , monkeypatch ):
122+ monkeypatch . setattr ( pubchempy , 'get_compounds' , mock_get_compounds )
126123 helium_geometry = geometry_from_pubchem ('helium' )
127- self . helium_natoms = len (helium_geometry )
124+ helium_natoms_actual = len (helium_geometry )
128125
129126 helium_natoms = 1
130- self . assertEqual ( helium_natoms , self . helium_natoms )
127+ assert helium_natoms == helium_natoms_actual
131128
132- @ patch ( 'pubchempy.get_compounds' , mock_get_compounds )
133- def test_none ( self ):
129+ def test_none ( self , monkeypatch ):
130+ monkeypatch . setattr ( pubchempy , 'get_compounds' , mock_get_compounds )
134131 none_geometry = geometry_from_pubchem ('none' )
135132
136- self . assertIsNone ( none_geometry )
133+ assert none_geometry is None
137134
138- @ patch ( 'pubchempy.get_compounds' , mock_get_compounds )
139- def test_water_2d ( self ):
135+ def test_water_2d ( self , monkeypatch ):
136+ monkeypatch . setattr ( pubchempy , 'get_compounds' , mock_get_compounds )
140137 water_geometry = geometry_from_pubchem ('water' , structure = '2d' )
141- self . water_natoms = len (water_geometry )
138+ water_natoms_actual = len (water_geometry )
142139
143140 water_natoms = 3
144- self . assertEqual ( water_natoms , self . water_natoms )
141+ assert water_natoms == water_natoms_actual
145142
146- self . oxygen_z_1 = water_geometry [0 ][1 ][2 ]
147- self . oxygen_z_2 = water_geometry [1 ][1 ][2 ]
143+ oxygen_z_1 = water_geometry [0 ][1 ][2 ]
144+ oxygen_z_2 = water_geometry [1 ][1 ][2 ]
148145 z = 0
149- self . assertEqual ( z , self . oxygen_z_1 )
150- self . assertEqual ( z , self . oxygen_z_2 )
146+ assert z == oxygen_z_1
147+ assert z == oxygen_z_2
151148
152149 with pytest .raises (ValueError , match = 'Incorrect value for the argument structure' ):
153150 _ = geometry_from_pubchem ('water' , structure = 'foo' )
154151
155152 @pytest .mark .flaky (retries = 3 , delay = 2 , only_on = [pubchempy .ServerBusyError ])
156153 def test_geometry_from_pubchem_live_api (self ):
157154 water_geometry = geometry_from_pubchem ('water' )
158- self . assertEqual ( len (water_geometry ), 3 )
155+ assert len (water_geometry ) == 3
0 commit comments