1- import unittest
1+ import pytest
22
33import httpretty
44
1313logging .basicConfig (level = logging .ERROR )
1414
1515
16- class TestUtils (unittest . TestCase ):
16+ class TestUtils (object ):
1717
1818 def test_get_element (self ):
1919 with open (ATOM_DATASET ) as f :
2020 entry = f .read ()
21+
2122 # One value
2223 title = utils .get_element (entry , 'title' , 'dcterms' ).text
23- self .assertEqual (title , 'Roasting at Home' )
24+ assert title == 'Roasting at Home'
25+
2426 # Two values
2527 creator = utils .get_element (entry , 'creator' , 'dcterms' ).text
26- self .assertEqual (creator , 'Peets, John' )
28+ assert creator == 'Peets, John'
29+
2730 # No values
2831 nonsense = utils .get_element (entry , 'nonsense' , 'booga' )
29- self . assertIsNone ( nonsense )
32+ assert nonsense is None
3033
3134 def test_get_elements (self ):
3235 with open (ATOM_DATASET ) as f :
3336 entry = f .read ()
37+
3438 # One value
3539 titles = utils .get_elements (entry , 'title' , 'dcterms' )
36- self .assertEqual (len (titles ), 1 )
37- self .assertEqual (titles [0 ].text , 'Roasting at Home' )
40+ assert len (titles ) == 1
41+ assert titles [0 ].text == 'Roasting at Home'
42+
3843 # Two values
3944 creators = utils .get_elements (entry , 'creator' , 'dcterms' )
40- self .assertEqual (len (creators ), 2 )
41- self .assertEqual (creators [0 ].text , 'Peets, John' )
42- self .assertEqual (creators [1 ].text , 'Stumptown, Jane' )
45+ assert len (creators ) == 2
46+ assert creators [0 ].text == 'Peets, John'
47+ assert creators [1 ].text == 'Stumptown, Jane'
48+
4349 # No values
4450 nonsense = utils .get_elements (entry , 'nonsense' , 'booga' )
45- self . assertEqual ( nonsense , [])
51+ assert nonsense == []
4652
4753 def test_format_term (self ):
4854 # A term not in the replacement dict
4955 formatted_term = utils .format_term ('title' , namespace = 'dcterms' )
50- self . assertEqual ( formatted_term , '{http://purl.org/dc/terms/}title' )
56+ assert formatted_term == '{http://purl.org/dc/terms/}title'
5157
5258 def test_format_term_replace (self ):
5359 # A term in the replacement dict
5460 formatted_term = utils .format_term ('id' , namespace = 'dcterms' )
55- self . assertEqual ( formatted_term , '{http://purl.org/dc/terms/}identifier' )
61+ assert formatted_term == '{http://purl.org/dc/terms/}identifier'
5662
5763
58- class TestConnection (unittest . TestCase ):
64+ class TestConnection (object ):
5965
6066 def test_connect (self ):
6167 c = Connection (TEST_HOST , TEST_TOKEN )
6268
63- self . assertEqual ( c .host , TEST_HOST )
64- self . assertEqual ( c .token , TEST_TOKEN )
65- self . assertTrue ( c .service_document )
69+ assert c .host == TEST_HOST
70+ assert c .token == TEST_TOKEN
71+ assert c .service_document
6672
6773 def test_connect_unauthorized (self ):
68- with self . assertRaises (exceptions .UnauthorizedError ):
74+ with pytest . raises (exceptions .UnauthorizedError ):
6975 Connection (TEST_HOST , 'wrong-token' )
7076
7177 @httpretty .activate
@@ -76,11 +82,11 @@ def test_connect_unknown_failure(self):
7682 status = 400 ,
7783 )
7884
79- with self . assertRaises (exceptions .ConnectionError ):
85+ with pytest . raises (exceptions .ConnectionError ):
8086 Connection (TEST_HOST , TEST_TOKEN )
8187
8288
83- class TestDataset (unittest . TestCase ):
89+ class TestDataset (object ):
8490
8591 def test_init (self ):
8692 dataset = Dataset (title = 'My Dataset' , publisher = 'Mr. Pub Lisher' )
@@ -94,9 +100,9 @@ def test_init(self):
94100 namespace = 'dcterms' ,
95101 tag = 'publisher'
96102 ).text
97- self . assertEqual ( title , 'My Dataset' )
98- self . assertEqual ( title , dataset .title )
99- self . assertEqual ( publisher , 'Mr. Pub Lisher' )
103+ assert title == 'My Dataset'
104+ assert title == dataset .title
105+ assert publisher == 'Mr. Pub Lisher'
100106
101107 def test_init_from_xml (self ):
102108 dataset = Dataset .from_xml_file (ATOM_DATASET )
@@ -110,45 +116,41 @@ def test_init_from_xml(self):
110116 namespace = 'dcterms' ,
111117 tag = 'rights'
112118 ).text
113- self . assertEqual ( title , 'Roasting at Home' )
114- self . assertEqual ( publisher , 'Creative Commons CC-BY 3.0 (unported) http://creativecommons.org/licenses/by/3.0/' )
119+ assert title == 'Roasting at Home'
120+ assert publisher == 'Creative Commons CC-BY 3.0 (unported) http://creativecommons.org/licenses/by/3.0/'
115121
116122
117- class TestDatasetOperations (unittest . TestCase ):
123+ class TestDatasetOperations (object ):
118124
119125 @classmethod
120- def setUpClass ( self ):
126+ def setup_class ( cls ):
121127 print "Connecting to DVN."
122- self .dvc = Connection (TEST_HOST , TEST_TOKEN )
128+ cls .dvc = Connection (TEST_HOST , TEST_TOKEN )
123129
124130 print "Getting Dataverse"
125- dataverses = self .dvc .get_dataverses ()
131+ dataverses = cls .dvc .get_dataverses ()
126132 if not dataverses :
127133 raise exceptions .DataverseError (
128134 'You must have a Dataverse to run these tests.'
129135 )
130136
131- self .dv = dataverses [0 ]
137+ cls .dv = dataverses [0 ]
132138
133139 print "Removing any existing datasets."
134- datasets = self .dv .get_datasets ()
140+ datasets = cls .dv .get_datasets ()
135141 for dataset in datasets :
136142 if dataset .get_state () != 'DEACCESSIONED' :
137- self .dv .delete_dataset (dataset )
143+ cls .dv .delete_dataset (dataset )
138144 print 'Dataverse emptied.'
139145
140- def setUp (self ):
141- # runs before each test method
146+ def setup_method (self , method ):
142147
143148 # create a dataset for each test
144149 s = Dataset (** PICS_OF_CATS_DATASET )
145150 self .dv .add_dataset (s )
146- doi = s .doi
147- self .s = self .dv .get_dataset_by_doi (doi )
148- self .assertEqual (doi , self .s .doi )
149- return
151+ self .s = self .dv .get_dataset_by_doi (s .doi )
150152
151- def tearDown (self ):
153+ def teardown_method (self , method ):
152154 try :
153155 self .dv .delete_dataset (self .s )
154156 finally :
@@ -158,71 +160,69 @@ def test_create_dataset_from_xml(self):
158160 new_dataset = Dataset .from_xml_file (ATOM_DATASET )
159161 self .dv .add_dataset (new_dataset )
160162 retrieved_dataset = self .dv .get_dataset_by_title ("Roasting at Home" )
161- self . assertTrue ( retrieved_dataset )
163+ assert retrieved_dataset
162164 self .dv .delete_dataset (retrieved_dataset )
163165
164166 def test_add_files (self ):
165167 self .s .add_files (EXAMPLE_FILES )
166168 actual_files = [f .name for f in self .s .get_files ()]
167169
168- self . assertIn ( '__init__.py' , actual_files )
169- self . assertIn ( 'config.py' , actual_files )
170+ assert '__init__.py' in actual_files
171+ assert 'config.py' in actual_files
170172
171173 def test_upload_file (self ):
172174 self .s .upload_file ('file.txt' , 'This is a simple text file!' )
173175 self .s .upload_file ('file2.txt' , 'This is the second simple text file!' )
174176 actual_files = [f .name for f in self .s .get_files ()]
175177
176- self . assertIn ( 'file.txt' , actual_files )
177- self . assertIn ( 'file2.txt' , actual_files )
178+ assert 'file.txt' in actual_files
179+ assert 'file2.txt' in actual_files
178180
179181 def test_display_atom_entry (self ):
180182 # this just tests we can get an entry back, but does
181183 # not do anything with that xml yet. however, we do use get_entry
182184 # in other methods so this test case is probably covered
183- self .assertTrue ( self . s .get_entry () )
185+ assert self .s .get_entry ()
184186
185187 def test_display_dataset_statement (self ):
186188 # this just tests we can get an entry back, but does
187189 # not do anything with that xml yet. however, we do use get_statement
188190 # in other methods so this test case is probably covered
189- self .assertTrue ( self . s .get_statement () )
191+ assert self .s .get_statement ()
190192
191193 def test_delete_a_file (self ):
192194 self .s .upload_file ('cat.jpg' , b'Whatever a cat looks like goes here.' )
193195
194- #add file and confirm
196+ # Add file and confirm
195197 files = self .s .get_files ()
196- cat_file = [ f for f in files if f . name == 'cat.jpg' ]
197- self . assertTrue ( len ( cat_file ) == 1 )
198+ assert len ( files ) == 1
199+ assert files [ 0 ]. name == 'cat.jpg'
198200
199- #delete file and confirm
200- self .s .delete_file (cat_file [0 ])
201+ # Delete file and confirm
202+ self .s .delete_file (files [0 ])
201203 files = self .s .get_files ()
202- cat_file = [f for f in files if f .name == "cat.jpg" ]
203- self .assertTrue (len (cat_file ) == 0 )
204+ assert not files
204205
205206 def test_delete_a_dataset (self ):
206207 xmlDataset = Dataset .from_xml_file (ATOM_DATASET )
207208 self .dv .add_dataset (xmlDataset )
208209 atomDataset = self .dv .get_dataset_by_title ("Roasting at Home" )
209- self .assertTrue (atomDataset )
210-
211210 num_datasets = len (self .dv .get_datasets ())
212- self .assertTrue (num_datasets > 0 )
211+
212+ assert num_datasets > 0
213213 self .dv .delete_dataset (atomDataset )
214- self . assertEqual ( atomDataset .get_state (refresh = True ), 'DEACCESSIONED' )
215- self . assertEqual ( len (self .dv .get_datasets ()), num_datasets - 1 )
214+ assert atomDataset .get_state (refresh = True ) == 'DEACCESSIONED'
215+ assert len (self .dv .get_datasets ()) == num_datasets - 1
216216
217- @unittest . skip ( 'Published datasets can no longer be deaccessioned via API' )
217+ @pytest . mark . skipif ( True , reason = 'Published datasets can no longer be deaccessioned via API' )
218218 def test_publish_dataset (self ):
219- self .assertTrue ( self . s .get_state () == "DRAFT" )
219+ assert self .s .get_state () == "DRAFT"
220220 self .s .publish ()
221- self .assertTrue ( self . s .get_state () == "PUBLISHED" )
221+ assert self .s .get_state () == "PUBLISHED"
222222 self .dv .delete_dataset (self .s )
223- self .assertTrue ( self . s .get_state (refresh = True ) == "DEACCESSIONED" )
223+ assert self .s .get_state (refresh = True ) == "DEACCESSIONED"
224224
225225
226226if __name__ == '__main__' :
227- unittest .main ()
227+ pytest .main ()
228228
0 commit comments