-
Notifications
You must be signed in to change notification settings - Fork 0
/
report.html
351 lines (315 loc) · 28.3 KB
/
report.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Test Report</title>
<link href="assets/style.css" rel="stylesheet" type="text/css"/></head>
<body onLoad="init()">
<script>/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
function toArray(iter) {
if (iter === null) {
return null;
}
return Array.prototype.slice.call(iter);
}
function find(selector, elem) {
if (!elem) {
elem = document;
}
return elem.querySelector(selector);
}
function find_all(selector, elem) {
if (!elem) {
elem = document;
}
return toArray(elem.querySelectorAll(selector));
}
function sort_column(elem) {
toggle_sort_states(elem);
var colIndex = toArray(elem.parentNode.childNodes).indexOf(elem);
var key;
if (elem.classList.contains('numeric')) {
key = key_num;
} else if (elem.classList.contains('result')) {
key = key_result;
} else {
key = key_alpha;
}
sort_table(elem, key(colIndex));
}
function show_all_extras() {
find_all('.col-result').forEach(show_extras);
}
function hide_all_extras() {
find_all('.col-result').forEach(hide_extras);
}
function show_extras(colresult_elem) {
var extras = colresult_elem.parentNode.nextElementSibling;
var expandcollapse = colresult_elem.firstElementChild;
extras.classList.remove("collapsed");
expandcollapse.classList.remove("expander");
expandcollapse.classList.add("collapser");
}
function hide_extras(colresult_elem) {
var extras = colresult_elem.parentNode.nextElementSibling;
var expandcollapse = colresult_elem.firstElementChild;
extras.classList.add("collapsed");
expandcollapse.classList.remove("collapser");
expandcollapse.classList.add("expander");
}
function show_filters() {
var filter_items = document.getElementsByClassName('filter');
for (var i = 0; i < filter_items.length; i++)
filter_items[i].hidden = false;
}
function add_collapse() {
// Add links for show/hide all
var resulttable = find('table#results-table');
var showhideall = document.createElement("p");
showhideall.innerHTML = '<a href="javascript:show_all_extras()">Show all details</a> / ' +
'<a href="javascript:hide_all_extras()">Hide all details</a>';
resulttable.parentElement.insertBefore(showhideall, resulttable);
// Add show/hide link to each result
find_all('.col-result').forEach(function(elem) {
var collapsed = get_query_parameter('collapsed') || 'Passed';
var extras = elem.parentNode.nextElementSibling;
var expandcollapse = document.createElement("span");
if (extras.classList.contains("collapsed")) {
expandcollapse.classList.add("expander")
} else if (collapsed.includes(elem.innerHTML)) {
extras.classList.add("collapsed");
expandcollapse.classList.add("expander");
} else {
expandcollapse.classList.add("collapser");
}
elem.appendChild(expandcollapse);
elem.addEventListener("click", function(event) {
if (event.currentTarget.parentNode.nextElementSibling.classList.contains("collapsed")) {
show_extras(event.currentTarget);
} else {
hide_extras(event.currentTarget);
}
});
})
}
function get_query_parameter(name) {
var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
function init () {
reset_sort_headers();
add_collapse();
show_filters();
sort_column(find('.initial-sort'));
find_all('.sortable').forEach(function(elem) {
elem.addEventListener("click",
function(event) {
sort_column(elem);
}, false)
});
};
function sort_table(clicked, key_func) {
var rows = find_all('.results-table-row');
var reversed = !clicked.classList.contains('asc');
var sorted_rows = sort(rows, key_func, reversed);
/* Whole table is removed here because browsers acts much slower
* when appending existing elements.
*/
var thead = document.getElementById("results-table-head");
document.getElementById('results-table').remove();
var parent = document.createElement("table");
parent.id = "results-table";
parent.appendChild(thead);
sorted_rows.forEach(function(elem) {
parent.appendChild(elem);
});
document.getElementsByTagName("BODY")[0].appendChild(parent);
}
function sort(items, key_func, reversed) {
var sort_array = items.map(function(item, i) {
return [key_func(item), i];
});
sort_array.sort(function(a, b) {
var key_a = a[0];
var key_b = b[0];
if (key_a == key_b) return 0;
if (reversed) {
return (key_a < key_b ? 1 : -1);
} else {
return (key_a > key_b ? 1 : -1);
}
});
return sort_array.map(function(item) {
var index = item[1];
return items[index];
});
}
function key_alpha(col_index) {
return function(elem) {
return elem.childNodes[1].childNodes[col_index].firstChild.data.toLowerCase();
};
}
function key_num(col_index) {
return function(elem) {
return parseFloat(elem.childNodes[1].childNodes[col_index].firstChild.data);
};
}
function key_result(col_index) {
return function(elem) {
var strings = ['Error', 'Failed', 'Rerun', 'XFailed', 'XPassed',
'Skipped', 'Passed'];
return strings.indexOf(elem.childNodes[1].childNodes[col_index].firstChild.data);
};
}
function reset_sort_headers() {
find_all('.sort-icon').forEach(function(elem) {
elem.parentNode.removeChild(elem);
});
find_all('.sortable').forEach(function(elem) {
var icon = document.createElement("div");
icon.className = "sort-icon";
icon.textContent = "vvv";
elem.insertBefore(icon, elem.firstChild);
elem.classList.remove("desc", "active");
elem.classList.add("asc", "inactive");
});
}
function toggle_sort_states(elem) {
//if active, toggle between asc and desc
if (elem.classList.contains('active')) {
elem.classList.toggle('asc');
elem.classList.toggle('desc');
}
//if inactive, reset all other functions and add ascending active
if (elem.classList.contains('inactive')) {
reset_sort_headers();
elem.classList.remove('inactive');
elem.classList.add('active');
}
}
function is_all_rows_hidden(value) {
return value.hidden == false;
}
function filter_table(elem) {
var outcome_att = "data-test-result";
var outcome = elem.getAttribute(outcome_att);
class_outcome = outcome + " results-table-row";
var outcome_rows = document.getElementsByClassName(class_outcome);
for(var i = 0; i < outcome_rows.length; i++){
outcome_rows[i].hidden = !elem.checked;
}
var rows = find_all('.results-table-row').filter(is_all_rows_hidden);
var all_rows_hidden = rows.length == 0 ? true : false;
var not_found_message = document.getElementById("not-found-message");
not_found_message.hidden = !all_rows_hidden;
}
</script>
<h1>report.html</h1>
<p>Report generated on 06-Jun-2020 at 13:24:02 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v2.1.1</p>
<h2>Environment</h2>
<table id="environment">
<tr>
<td>Packages</td>
<td>{"pluggy": "0.13.1", "py": "1.8.1", "pytest": "5.4.3"}</td></tr>
<tr>
<td>Platform</td>
<td>Linux-5.3.0-53-generic-x86_64-with-Ubuntu-18.04-bionic</td></tr>
<tr>
<td>Plugins</td>
<td>{"html": "2.1.1", "metadata": "1.9.0"}</td></tr>
<tr>
<td>Python</td>
<td>3.7.5</td></tr></table>
<h2>Summary</h2>
<p>6 tests ran in 14.64 seconds. </p>
<p class="filter" hidden="true">(Un)check the boxes to filter the results.</p><input checked="true" class="filter" data-test-result="passed" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="passed">5 passed</span>, <input checked="true" class="filter" data-test-result="skipped" disabled="true" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="skipped">0 skipped</span>, <input checked="true" class="filter" data-test-result="failed" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="failed">1 failed</span>, <input checked="true" class="filter" data-test-result="error" disabled="true" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="error">0 errors</span>, <input checked="true" class="filter" data-test-result="xfailed" disabled="true" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="xfailed">0 expected failures</span>, <input checked="true" class="filter" data-test-result="xpassed" disabled="true" hidden="true" name="filter_checkbox" onChange="filter_table(this)" type="checkbox"/><span class="xpassed">0 unexpected passes</span>
<h2>Results</h2>
<table id="results-table">
<thead id="results-table-head">
<tr>
<th class="sortable result initial-sort" col="result">Result</th>
<th class="sortable" col="name">Test</th>
<th class="sortable numeric" col="duration">Duration</th>
<th>Links</th></tr>
<tr hidden="true" id="not-found-message">
<th colspan="4">No results found. Try to check the filters</th></tr></thead>
<tbody class="failed results-table-row">
<tr>
<td class="col-result">Failed</td>
<td class="col-name">test_search_books.py::test_books_byquote_output</td>
<td class="col-duration">1.23</td>
<td class="col-links"></td></tr>
<tr>
<td class="extra" colspan="4">
<div class="log">obj_search = <base.search_books.Search object at 0x7f9ef7f78910>, xml_parse = <class 'utils.xml_util.XMLUtil'><br/><br/> def test_books_byquote_output(obj_search,xml_parse):<br/> code, text = obj_search.search_by_quote()<br/> books = xml_parse.get_book_name_byquote(text)<br/>> assert bool(books)<br/><span class="error">E assert False</span><br/><span class="error">E + where False = bool({})</span><br/><br/>test_search_books.py:19: AssertionError<br/> -------------------------------Captured log call-------------------------------- <br/>[35mDEBUG [0m urllib3.connectionpool:connectionpool.py:941 Starting new HTTPS connection (1): www.goodreads.com:443
[35mDEBUG [0m urllib3.connectionpool:connectionpool.py:442 https://www.goodreads.com:443 "GET /quotes/search?utf8=%E2%9C%93&q=&commit=Search HTTP/1.1" 200 None
[32mINFO [0m root:search_books.py:56 Response code is : 200
[32mINFO [0m root:search_books.py:58 Returning request data<br/></div></td></tr></tbody>
<tbody class="passed results-table-row">
<tr>
<td class="col-result">Passed</td>
<td class="col-name">test_search_books.py::test_search_by_field_statustest</td>
<td class="col-duration">1.13</td>
<td class="col-links"></td></tr>
<tr>
<td class="extra" colspan="4">
<div class="log"> -------------------------------Captured log call-------------------------------- <br/>[32mINFO [0m root:search_books.py:34 Payload created
[35mDEBUG [0m urllib3.connectionpool:connectionpool.py:941 Starting new HTTPS connection (1): www.goodreads.com:443
[35mDEBUG [0m urllib3.connectionpool:connectionpool.py:442 https://www.goodreads.com:443 "GET /search/index.xml?key=NT02qJcjLCaq2GgotBcIQ&q=airforce&search%5Bfield%5D=all HTTP/1.1" 200 None
[32mINFO [0m root:search_books.py:37 Search query hit
[32mINFO [0m root:search_books.py:39 Response code is : 200
[32mINFO [0m root:search_books.py:41 Returning request data<br/></div></td></tr></tbody>
<tbody class="passed results-table-row">
<tr>
<td class="col-result">Passed</td>
<td class="col-name">test_search_books.py::test_search_by_field_output</td>
<td class="col-duration">1.33</td>
<td class="col-links"></td></tr>
<tr>
<td class="extra" colspan="4">
<div class="log"> -------------------------------Captured log call-------------------------------- <br/>[32mINFO [0m root:search_books.py:34 Payload created
[35mDEBUG [0m urllib3.connectionpool:connectionpool.py:941 Starting new HTTPS connection (1): www.goodreads.com:443
[35mDEBUG [0m urllib3.connectionpool:connectionpool.py:442 https://www.goodreads.com:443 "GET /search/index.xml?key=NT02qJcjLCaq2GgotBcIQ&q=airforce&search%5Bfield%5D=all HTTP/1.1" 200 None
[32mINFO [0m root:search_books.py:37 Search query hit
[32mINFO [0m root:search_books.py:39 Response code is : 200
[32mINFO [0m root:search_books.py:41 Returning request data
[32mINFO [0m root:test_search_books.py:26 {'Katherine Sharp Landdeck': 'The Women with Silver Wings: The Inspiring True Story of the Women Airforce Service Pilots of World War II', 'P. O’Connell Pearson': 'Fly Girls: The Forgotten Women Airforce Service Pilots of WWII', 'Marion Stegeman Hodgson': 'Winning My Wings: A Woman Airforce Service Pilot in World War II', 'Molly Merryman': 'Clipped Wings: The Rise and Fall of the Women Airforce Service Pilots (WASPS) of World War II', 'Marianne Verges': 'On Silver Wings: The Women Airforce Service Pilots of World War II', 'Wanda Langley': 'Flying Higher: The Women Airforce Service Pilots of World War II', 'Vera S. Williams': 'WASPs: Women Airforce Service Pilots of World War II', 'Kelly Flinn': 'Proud to Be: My Life, The Airforce, The Controversy', 'Robert D. Loomis': 'The Story of the U.S. Airforce', 'Anne Noggle': 'For God, Country, and the Thrill of It: Women Airforce Service Pilots in World War II', 'Byrd Howell Granger': 'On Final Approach: The Women Airforce Service Pilots of W.W. II', 'Ted Mattson': "Adventures of the Iditarod Airforce: True Stories about the Pilots Who Fly for Alaska's Famous Sled Dog Race", 'Emma Gee': 'WASP-Women Airforce Service Pilots', 'Herbert Molloy Mason': 'The United States Airforce', 'David Donald': "The Pocket Guide to Military Aircraft: and the World's Airforces", 'Barrett Tillman': 'Alpha Bravo Delta Guide To The U.S. Airforce', 'Chris Dunning': 'Courage Alone: The Italian Airforce 1940-1943', 'Roy Conyers Nesbit': "Britain's Rebel Airforce: The War from the Air in Rhodesia", 'Donald L. Miller': 'Eighth Airforce: The American Bomber Crews in Britain', 'Robert F. Dorr': 'Fighters of the US Airforce'}<br/></div></td></tr></tbody>
<tbody class="passed results-table-row">
<tr>
<td class="col-result">Passed</td>
<td class="col-name">test_search_books.py::test_books_byyear_statustest</td>
<td class="col-duration">5.01</td>
<td class="col-links"></td></tr>
<tr>
<td class="extra" colspan="4">
<div class="log"> -------------------------------Captured log call-------------------------------- <br/>[35mDEBUG [0m urllib3.connectionpool:connectionpool.py:941 Starting new HTTPS connection (1): www.goodreads.com:443
[35mDEBUG [0m urllib3.connectionpool:connectionpool.py:442 https://www.goodreads.com:443 "GET /book/popular_by_date/2019 HTTP/1.1" 200 None
[32mINFO [0m root:search_books.py:71 Response code is : 200
[32mINFO [0m root:search_books.py:73 Returning request data<br/></div></td></tr></tbody>
<tbody class="passed results-table-row">
<tr>
<td class="col-result">Passed</td>
<td class="col-name">test_search_books.py::test_books_byyear_output</td>
<td class="col-duration">4.42</td>
<td class="col-links"></td></tr>
<tr>
<td class="extra" colspan="4">
<div class="log"> -------------------------------Captured log call-------------------------------- <br/>[35mDEBUG [0m urllib3.connectionpool:connectionpool.py:941 Starting new HTTPS connection (1): www.goodreads.com:443
[35mDEBUG [0m urllib3.connectionpool:connectionpool.py:442 https://www.goodreads.com:443 "GET /book/popular_by_date/2019 HTTP/1.1" 200 None
[32mINFO [0m root:search_books.py:71 Response code is : 200
[32mINFO [0m root:search_books.py:73 Returning request data
[32mINFO [0m root:test_search_books.py:37 {'Alex Michaelides': 'The Silent Patient', 'Taylor Jenkins Reid': 'Daisy Jones & The Six', 'Margaret Atwood': 'The Testaments', 'Malcolm Gladwell': 'Talking to Strangers: What We Should Know About the People We Don’t Know', 'Leigh Bardugo': 'Ninth House (Alex Stern, #1)', 'Ann Patchett': 'The Dutch House', 'Jojo Moyes': 'The Giver of Stars', 'Mary Beth Keane': 'Ask Again, Yes', 'Stephen King': 'The Institute', 'Casey McQuiston': 'Red, White & Royal Blue', 'Erin Morgenstern': 'The Starless Sea', 'Kiley Reid': 'Such a Fun Age', 'Lori Gottlieb': 'Maybe You Should Talk to Someone: A Therapist, Her Therapist, and Our Lives Revealed', 'Blake Crouch': 'Recursion', 'Greer Hendricks': 'An Anonymous Girl', 'Ocean Vuong': "On Earth We're Briefly Gorgeous", 'Colson Whitehead': 'The Nickel Boys', 'Glendy Vanderah': 'Where the Forest Meets the Stars', 'Etaf Rum': 'A Woman Is No Man', 'Lisa Jewell': 'The Family Upstairs', 'Ta-Nehisi Coates': 'The Water Dancer', 'Holly Black': 'The Queen of Nothing (The Folk of the Air, #3)', 'Christina Lauren': 'The Unhoneymooners', 'Claire Lombardo': 'The Most Fun We Ever Had', 'Lisa Taddeo': 'Three Women', 'Rachel Hollis': 'Girl, Stop Apologizing: A Shame-Free Plan for Embracing and Achieving Your Goals', 'Samantha Downing': 'My Lovely Wife', 'Alex North': 'The Whisper Man', 'Katherine Center': 'Things You Save in a Fire', 'Alix E. Harrow': 'The Ten Thousand Doors of January', 'Margaret Rogerson': 'Sorcery of Thorns', 'Colleen Hoover': 'Regretting You', 'Amy Harmon': 'What the Wind Knows', 'Angie Kim': 'Miracle Creek', 'Fiona Valpy': "The Dressmaker's Gift", 'Linda Holmes': 'Evvie Drake Starts Over', 'Kelly Harms': 'The Overdue Life of Amy Byler', 'Ali Wong': 'Dear Girls: Intimate Tales, Untold Secrets, & Advice for Living Your Best Life', 'Elin Hilderbrand': "Summer of '69", 'Heather Morris': "Cilka's Journey (The Tattooist of Auschwitz, #2)", 'Rory Power': 'Wilder Girls', 'Martha Hall Kelly': 'Lost Roses (Lilac Girls, #2)', 'Caroline Criado Perez': 'Invisible Women: Data Bias in a World Designed for Men', 'Lisa See': 'The Island of Sea Women', 'Melinda Gates': 'The Moment of Lift: How Empowering Women Changes the World', 'Ruth Ware': 'The Turn of the Key', 'Yangsze Choo': 'The Night Tiger', 'Tarryn Fisher': 'The Wives', 'Chanel Miller': 'Know My Name: A Memoir', 'Jia Tolentino': 'Trick Mirror: Reflections on Self-Delusion', 'Taffy Brodesser-Akner': 'Fleishman Is in Trouble', 'William Kent Krueger': 'This Tender Land', 'Kelly Rimmer': 'The Things We Cannot Say', 'Bill Bryson': 'The Body: A Guide for Occupants', 'Candice Carty-Williams': 'Queenie', 'Bruce Holsinger': 'The Gifted School', 'Christine Riccio': 'Again, but Better', 'Roshani Chokshi': 'The Gilded Wolves (The Gilded Wolves, #1)', 'Ruta Sepetys': 'The Fountains of Silence', 'Tomi Adeyemi': 'Children of Virtue and Vengeance (Legacy of Orïsha, #2)', 'Adrian McKinty': 'The Chain', 'Amie Kaufman': 'Aurora Rising (The Aurora Cycle, #1)', 'Kim Michele Richardson': 'The Book Woman of Troublesome Creek', 'Silvia Moreno-Garcia': 'Gods of Jade and Shadow', 'Jennifer Weiner': 'Mrs. Everything', 'Rainbow Rowell': 'Wayward Son (Simon Snow, #2)', 'Tracey Garvis Graves': 'The Girl He Used to Know', 'Adam Higginbotham': "Midnight in Chernobyl: The Untold Story of the World's Greatest Nuclear Disaster", 'Julia Phillips': 'Disappearing Earth', 'Neal Shusterman': 'The Toll (Arc of a Scythe, #3)', 'Karen Thompson Walker': 'The Dreamers', 'Emily A. Duncan': 'Wicked Saints (Something Dark and Holy, #1)', 'L.J. Shen': 'Pretty Reckless (All Saints High, #1)', 'Tamsyn Muir': 'Gideon the Ninth (The Locked Tomb, #1)', 'Katharine McGee': 'American Royals (American Royals, #1)', 'Bridget Collins': 'The Binding', 'Sophie Kinsella': 'I Owe You One', 'Abbi Waxman': 'The Bookish Life of Nina Hill', 'Renée Ahdieh': 'The Beautiful (The Beautiful, #1)', 'Peter Swanson': 'Before She Knew Him', 'Elizabeth Acevedo': 'With the Fire on High', 'Megan Miranda': 'The Last House Guest', 'Caitlin Doughty': 'Will My Cat Eat My Eyeballs? Big Questions from Tiny Mortals About Death', 'Cal Newport': 'Digital Minimalism: Choosing a Focused Life in a Noisy World', 'Karen Kilgariff': 'Stay Sexy & Don’t Get Murdered: The Definitive How-To Guide', 'André Aciman': 'Find Me (Call Me By Your Name, #2)', 'David Epstein': 'Range: Why Generalists Triumph in a Specialized World', 'Mark Manson': 'Everything is F*cked: A Book About Hope', 'Stephanie Garber': 'Finale (Caraval, #3)', 'Chandler Baker': 'Whisper Network', 'Dani Shapiro': 'Inheritance: A Memoir of Genealogy, Paternity, and Love', 'Joanne Ramos': 'The Farm', 'Marie Benedict': 'The Only Woman in the Room', 'Jenny Odell': 'How to Do Nothing: Resisting the Attention Economy', 'Jean Kwok': 'Searching for Sylvie Lee', 'Hafsah Faizal': 'We Hunt the Flame (Sands of Arawiya, #1)', 'Ted Chiang': 'Exhalation: Stories', 'Helena Hunting': 'Meet Cute', 'Elton John': 'Me', 'Sally Hepworth': 'The Mother-in-Law', 'Shari Lapena': 'Someone We Know', 'Jodi Kantor': 'She Said: Breaking the Sexual Harassment Story That Helped Ignite a Movement', 'Julianne MacLean': 'A Fire Sparkling', 'John Grisham': 'The Guardians', 'Astrid Scholte': 'Four Dead Queens', 'Amal El-Mohtar': 'This Is How You Lose the Time War', 'Kim Liggett': 'The Grace Year', 'Christina McDonald': 'The Night Olivia Fell', 'Katherine Arden': 'The Winter of the Witch (Winternight Trilogy, #3)', 'Barry Eisler': 'The Killer Collective (John Rain, #10; Ben Treven #4; Livia Lone #2.5)', 'Sally Thorne': '99 Percent Mine', 'Elizabeth Lim': 'Spin the Dawn (The Blood of Stars, #1)', 'Edward Snowden': 'Permanent Record', "Barbara O'Neal": 'When We Believed in Mermaids', 'Holly Jackson': "A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)", 'Abby Jimenez': 'The Friend Zone', 'Maureen Callahan': 'American Predator: The Hunt for the Most Meticulous Serial Killer of the 21st Century', 'E.L. James': 'The Mister', 'Gregg Olsen': 'Lying Next to Me', 'Cassandra Clare': 'The Red Scrolls of Magic (The Eldest Curses #1)', 'Anissa Gray': 'The Care and Feeding of Ravenously Hungry Girls', 'Lyssa Kay Adams': 'The Bromance Book Club (Bromance Book Club, #1)', 'Sarah Dessen': 'The Rest of the Story', 'Joshilyn Jackson': 'Never Have I Ever', 'Julie Berry': 'Lovely War', 'K.F. Breene': 'The Culling Trials (Shadowspell Academy, #1)', 'Jennifer McMahon': 'The Invited', 'Esmé Weijun Wang': 'The Collected Schizophrenias: Essays', 'Tembi Locke': 'From Scratch: A Memoir of Love, Sicily, and Finding Home', 'Steven Konkoly': 'The Rescue (Ryan Decker #1)', 'Joan He': 'Descendant of the Crane', 'Karin Slaughter': 'The Last Widow (Will Trent, #9)', 'Tara Conklin': 'The Last Romantics', 'Alice Hoffman': 'The World That We Knew', 'Jen DeLuca': 'Well Met (Well Met, #1)', 'Emma Rous': 'The Au Pair', 'Janet Evanovich': 'Twisted Twenty-Six (Stephanie Plum, #26)', 'Philip Pullman': 'The Secret Commonwealth (The Book of Dust, #2)', 'Seanan McGuire': 'Middlegame', 'Kate Quinn': 'The Huntress', 'Lucinda Berry': 'The Perfect Child', 'Claire McGowan': 'What You Did', 'Hallie Rubenhold': "The Five: The Lives of Jack the Ripper's Women", 'Lisa Gray': 'Thin Air (Jessica Shaw #1)', 'Samantha Shannon': 'The Priory of the Orange Tree', 'Camille Pagán': "I'm Fine and Neither Are You", 'Isabel Allende': 'A Long Petal of the Sea', 'Harlan Coben': 'Run Away', 'Mark Edwards': 'Here To Stay', 'Elizabeth Gilbert': 'City of Girls', 'Angie Thomas': 'On the Come Up'}<br/></div></td></tr></tbody>
<tbody class="passed results-table-row">
<tr>
<td class="col-result">Passed</td>
<td class="col-name">test_search_books.py::test_books_byquote_statustest</td>
<td class="col-duration">1.37</td>
<td class="col-links"></td></tr>
<tr>
<td class="extra" colspan="4">
<div class="log"> -------------------------------Captured log call-------------------------------- <br/>[35mDEBUG [0m urllib3.connectionpool:connectionpool.py:941 Starting new HTTPS connection (1): www.goodreads.com:443
[35mDEBUG [0m urllib3.connectionpool:connectionpool.py:442 https://www.goodreads.com:443 "GET /quotes/search?utf8=%E2%9C%93&q=&commit=Search HTTP/1.1" 200 None
[32mINFO [0m root:search_books.py:56 Response code is : 200
[32mINFO [0m root:search_books.py:58 Returning request data<br/></div></td></tr></tbody></table></body></html>