File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ from twisted .internet import defer
2
+ from twisted .trial import unittest
3
+
4
+ from scrapy import signals , Request , Spider
5
+ from scrapy .utils .test import get_crawler
6
+
7
+ from tests .mockserver import MockServer
8
+
9
+
10
+ class ItemSpider (Spider ):
11
+ name = 'itemspider'
12
+
13
+ def start_requests (self ):
14
+ for _ in range (10 ):
15
+ yield Request (self .mockserver .url ('/status?n=200' ),
16
+ dont_filter = True )
17
+
18
+ def parse (self , response ):
19
+ return {'field' : 42 }
20
+
21
+
22
+ class AsyncSignalTestCase (unittest .TestCase ):
23
+ def setUp (self ):
24
+ self .mockserver = MockServer ()
25
+ self .mockserver .__enter__ ()
26
+ self .items = []
27
+
28
+ def tearDown (self ):
29
+ self .mockserver .__exit__ (None , None , None )
30
+
31
+ async def _on_item_scraped (self , item ):
32
+ self .items .append (item )
33
+
34
+ @defer .inlineCallbacks
35
+ def test_simple_pipeline (self ):
36
+ crawler = get_crawler (ItemSpider )
37
+ crawler .signals .connect (self ._on_item_scraped , signals .item_scraped )
38
+ yield crawler .crawl (mockserver = self .mockserver )
39
+ self .assertEqual (len (self .items ), 10 )
You can’t perform that action at this time.
0 commit comments