mirror of https://github.com/scrapy/scrapy.git
Use inspect.getmembers in tested_methods_from_spidercls
This commit is contained in:
parent
8a4e51a19b
commit
76220e8733
|
|
@ -1,6 +1,7 @@
|
|||
import sys
|
||||
import re
|
||||
from functools import wraps
|
||||
from inspect import getmembers
|
||||
from unittest import TestCase
|
||||
|
||||
from scrapy.http import Request
|
||||
|
|
@ -17,7 +18,7 @@ class ContractsManager(object):
|
|||
|
||||
def tested_methods_from_spidercls(self, spidercls):
|
||||
methods = []
|
||||
for key, value in vars(spidercls).items():
|
||||
for key, value in getmembers(spidercls):
|
||||
if (callable(value) and value.__doc__ and
|
||||
re.search(r'^\s*@', value.__doc__, re.MULTILINE)):
|
||||
methods.append(key)
|
||||
|
|
|
|||
|
|
@ -101,6 +101,10 @@ class TestSpider(Spider):
|
|||
pass
|
||||
|
||||
|
||||
class InheritsTestSpider(TestSpider):
|
||||
name = 'inherits_demo_spider'
|
||||
|
||||
|
||||
class ContractsManagerTest(unittest.TestCase):
|
||||
contracts = [UrlContract, ReturnsContract, ScrapesContract]
|
||||
|
||||
|
|
@ -202,3 +206,9 @@ class ContractsManagerTest(unittest.TestCase):
|
|||
|
||||
self.assertFalse(self.results.failures)
|
||||
self.assertTrue(self.results.errors)
|
||||
|
||||
def test_inherited_contracts(self):
|
||||
spider = InheritsTestSpider()
|
||||
|
||||
requests = self.conman.from_spider(spider, self.results)
|
||||
self.assertTrue(requests)
|
||||
|
|
|
|||
Loading…
Reference in New Issue