Use inspect.getmembers in tested_methods_from_spidercls

This commit is contained in:
Stas Glubokiy 2018-08-11 18:49:12 +03:00
parent 8a4e51a19b
commit 76220e8733
2 changed files with 12 additions and 1 deletions

View File

@ -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)

View File

@ -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)