Coverage for tests / test_tutorial / test_relationship_attributes / test_back_populates / test_tutorial001.py: 100%

17 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-01-06 21:09 +0000

1import importlib 1abcdefghi

2from types import ModuleType 1abcdefghi

3 

4import pytest 1abcdefghi

5from sqlalchemy.exc import SAWarning 1abcdefghi

6from sqlmodel import create_engine 1abcdefghi

7 

8from ....conftest import PrintMock, needs_py310 1abcdefghi

9 

10 

11@pytest.fixture( 1abcdefghi

12 name="mod", 

13 params=[ 

14 pytest.param("tutorial001_py39"), 

15 pytest.param("tutorial001_py310", marks=needs_py310), 

16 ], 

17) 

18def get_module(request: pytest.FixtureRequest) -> ModuleType: 1abcdefghi

19 mod = importlib.import_module( 1abcdefghi

20 f"docs_src.tutorial.relationship_attributes.back_populates.{request.param}" 

21 ) 

22 mod.sqlite_url = "sqlite://" 1abcdefghi

23 mod.engine = create_engine(mod.sqlite_url) 1abcdefghi

24 return mod 1abcdefghi

25 

26 

27expected_calls = [ 1abcdefghi

28 [ 

29 "Created hero:", 

30 { 

31 "age": None, 

32 "id": 1, 

33 "secret_name": "Dive Wilson", 

34 "team_id": 1, 

35 "name": "Deadpond", 

36 }, 

37 ], 

38 [ 

39 "Created hero:", 

40 { 

41 "age": 48, 

42 "id": 2, 

43 "secret_name": "Tommy Sharp", 

44 "team_id": 2, 

45 "name": "Rusty-Man", 

46 }, 

47 ], 

48 [ 

49 "Created hero:", 

50 { 

51 "age": None, 

52 "id": 3, 

53 "secret_name": "Pedro Parqueador", 

54 "team_id": None, 

55 "name": "Spider-Boy", 

56 }, 

57 ], 

58 [ 

59 "Updated hero:", 

60 { 

61 "age": None, 

62 "id": 3, 

63 "secret_name": "Pedro Parqueador", 

64 "team_id": 2, 

65 "name": "Spider-Boy", 

66 }, 

67 ], 

68 [ 

69 "Team Wakaland:", 

70 {"headquarters": "Wakaland Capital City", "id": 3, "name": "Wakaland"}, 

71 ], 

72 [ 

73 "Preventers new hero:", 

74 { 

75 "age": 32, 

76 "id": 6, 

77 "secret_name": "Natalia Roman-on", 

78 "team_id": 2, 

79 "name": "Tarantula", 

80 }, 

81 ], 

82 [ 

83 "Preventers new hero:", 

84 { 

85 "age": 36, 

86 "id": 7, 

87 "secret_name": "Steve Weird", 

88 "team_id": 2, 

89 "name": "Dr. Weird", 

90 }, 

91 ], 

92 [ 

93 "Preventers new hero:", 

94 { 

95 "age": 93, 

96 "id": 8, 

97 "secret_name": "Esteban Rogelios", 

98 "team_id": 2, 

99 "name": "Captain North America", 

100 }, 

101 ], 

102 [ 

103 "Preventers heroes:", 

104 [ 

105 { 

106 "age": 48, 

107 "id": 2, 

108 "secret_name": "Tommy Sharp", 

109 "team_id": 2, 

110 "name": "Rusty-Man", 

111 }, 

112 { 

113 "age": None, 

114 "id": 3, 

115 "secret_name": "Pedro Parqueador", 

116 "team_id": 2, 

117 "name": "Spider-Boy", 

118 }, 

119 { 

120 "age": 32, 

121 "id": 6, 

122 "secret_name": "Natalia Roman-on", 

123 "team_id": 2, 

124 "name": "Tarantula", 

125 }, 

126 { 

127 "age": 36, 

128 "id": 7, 

129 "secret_name": "Steve Weird", 

130 "team_id": 2, 

131 "name": "Dr. Weird", 

132 }, 

133 { 

134 "age": 93, 

135 "id": 8, 

136 "secret_name": "Esteban Rogelios", 

137 "team_id": 2, 

138 "name": "Captain North America", 

139 }, 

140 ], 

141 ], 

142 [ 

143 "Hero Spider-Boy:", 

144 { 

145 "age": None, 

146 "id": 3, 

147 "secret_name": "Pedro Parqueador", 

148 "team_id": 2, 

149 "name": "Spider-Boy", 

150 }, 

151 ], 

152 [ 

153 "Preventers Team:", 

154 {"headquarters": "Sharp Tower", "id": 2, "name": "Preventers"}, 

155 ], 

156 [ 

157 "Preventers Team Heroes:", 

158 [ 

159 { 

160 "age": 48, 

161 "id": 2, 

162 "secret_name": "Tommy Sharp", 

163 "team_id": 2, 

164 "name": "Rusty-Man", 

165 }, 

166 { 

167 "age": None, 

168 "id": 3, 

169 "secret_name": "Pedro Parqueador", 

170 "team_id": 2, 

171 "name": "Spider-Boy", 

172 }, 

173 { 

174 "age": 32, 

175 "id": 6, 

176 "secret_name": "Natalia Roman-on", 

177 "team_id": 2, 

178 "name": "Tarantula", 

179 }, 

180 { 

181 "age": 36, 

182 "id": 7, 

183 "secret_name": "Steve Weird", 

184 "team_id": 2, 

185 "name": "Dr. Weird", 

186 }, 

187 { 

188 "age": 93, 

189 "id": 8, 

190 "secret_name": "Esteban Rogelios", 

191 "team_id": 2, 

192 "name": "Captain North America", 

193 }, 

194 ], 

195 ], 

196 [ 

197 "Spider-Boy without team:", 

198 { 

199 "age": None, 

200 "id": 3, 

201 "secret_name": "Pedro Parqueador", 

202 "team_id": 2, 

203 "name": "Spider-Boy", 

204 }, 

205 ], 

206 [ 

207 "Preventers Team Heroes again:", 

208 [ 

209 { 

210 "age": 48, 

211 "id": 2, 

212 "secret_name": "Tommy Sharp", 

213 "team_id": 2, 

214 "name": "Rusty-Man", 

215 }, 

216 { 

217 "age": None, 

218 "id": 3, 

219 "secret_name": "Pedro Parqueador", 

220 "team_id": 2, 

221 "name": "Spider-Boy", 

222 }, 

223 { 

224 "age": 32, 

225 "id": 6, 

226 "secret_name": "Natalia Roman-on", 

227 "team_id": 2, 

228 "name": "Tarantula", 

229 }, 

230 { 

231 "age": 36, 

232 "id": 7, 

233 "secret_name": "Steve Weird", 

234 "team_id": 2, 

235 "name": "Dr. Weird", 

236 }, 

237 { 

238 "age": 93, 

239 "id": 8, 

240 "secret_name": "Esteban Rogelios", 

241 "team_id": 2, 

242 "name": "Captain North America", 

243 }, 

244 ], 

245 ], 

246 ["After committing"], 

247 [ 

248 "Spider-Boy after commit:", 

249 { 

250 "age": None, 

251 "id": 3, 

252 "secret_name": "Pedro Parqueador", 

253 "team_id": None, 

254 "name": "Spider-Boy", 

255 }, 

256 ], 

257 [ 

258 "Preventers Team Heroes after commit:", 

259 [ 

260 { 

261 "age": 48, 

262 "id": 2, 

263 "secret_name": "Tommy Sharp", 

264 "team_id": 2, 

265 "name": "Rusty-Man", 

266 }, 

267 { 

268 "age": 32, 

269 "id": 6, 

270 "secret_name": "Natalia Roman-on", 

271 "team_id": 2, 

272 "name": "Tarantula", 

273 }, 

274 { 

275 "age": 36, 

276 "id": 7, 

277 "secret_name": "Steve Weird", 

278 "team_id": 2, 

279 "name": "Dr. Weird", 

280 }, 

281 { 

282 "age": 93, 

283 "id": 8, 

284 "secret_name": "Esteban Rogelios", 

285 "team_id": 2, 

286 "name": "Captain North America", 

287 }, 

288 ], 

289 ], 

290] 

291 

292 

293def test_tutorial(print_mock: PrintMock, mod: ModuleType): 1abcdefghi

294 with pytest.warns(SAWarning): 1jklmnopqr

295 mod.main() 1jklmnopqr

296 assert print_mock.calls == expected_calls 1jklmnopqr