-
Notifications
You must be signed in to change notification settings - Fork 2
/
test_byr3_online.py
75 lines (59 loc) · 2.54 KB
/
test_byr3_online.py
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
# coding: utf_8
import unittest
import byr3
import os.path
TEST_DATA_DIR = os.path.join(os.path.dirname(__file__), 'test_data')
class TestByrOnline(unittest.TestCase):
def setUp(self):
self.byr = byr3.Byr()
def test_load_page(self):
page = self.byr.load_page('http://bbs.byr.cn/default')
self.assertTrue(u'北邮人论坛' in page)
def test_board_page(self):
board = self.byr.board("Linux")
bp = board.page(1)
self.assertTrue(u'如非特殊需要,本版不讨论关于RedHat9的相关问题' in bp.html)
def test_board_thread_list(self):
board = self.byr.board("Linux")
tl = board.page(1).thread_ids()
self.assertEqual(len(tl), 30) # 每页30个帖子
def test_thread_page_posts_nums(self):
thread = self.byr.thread('Linux', 100862)
tp = thread.page(1)
posts = list(tp.posts())
self.assertEqual(len(posts), 10) # 第一页应该有10贴
def test_thread_page_posts_authors(self):
thread = self.byr.thread('Linux', 100862)
tp = thread.page(1)
posts = list(tp.posts())
for username in ["sysusky", "hzmangel", "wks"]:
their_posts = [p for p in posts if p['username'] == username]
self.assertNotEqual(len(their_posts), 0, '%s has no posts'%username)
def test_whole_thread_page_fetch(self):
thread = self.byr.thread('Linux', 100862)
max_page_num = thread.page(0).max_page_num()
pages = thread.pages()
self.assertEqual(len(pages), max_page_num)
def test_whole_thread_post_fetch(self):
thread = self.byr.thread('Linux', 100862)
posts = thread.posts()
#self.assertEqual(len(posts), 14) # currently (2010-09-11 00:14)
for i,username in enumerate([
"sysusky", "hzmangel", "sysusky", "wks", "sysusky",
"yyg747", "kemp86", "byrmaster", "sutar", "sysusky",
"sysusky", "byrmaster", "sysusky", "byrmaster", ]):
self.assertEqual(posts[i]['username'], username)
def test_whole_thread_post_fetch_with_coding_error(self):
thread = self.byr.thread('ACM_ICPC', 11777)
posts = thread.posts()
# error may raise
def test_thread_with_non_existing_footers(self):
thread = self.byr.thread('Linux', 96787)
posts = thread.posts()
# error may raise
def test_thread_with_irregular_header(self):
thread = self.byr.thread('Linux', 54779)
posts = thread.posts()
# error may raise
if __name__ == '__main__':
unittest.main()