2012-10-25 109 views
2

我试图在另一个.py文件中调用test_check_footer_visible调用另一个类中的一个类的方法

origin.py有:

class FooterSection(unittest.TestCase): 
    """ 
    """ 
    browser = None 
    site_url = None 

    def setUp(self): 
     self.browser.open(self.site_url) 
     self.browser.window_maximize() 

     # make footer section 
     self._footer = FooterPage(self.browser) 

    def test_check_footer_visible(self): 
     #press the page down 
     self.browser.key_down_native("34") 
     self.browser.key_down_native("34") 
     self.browser.key_down_native("34") 
     print "Page down" 
     time.sleep (10) 

现在dest.py我需要调用test_check_footer_visible()。我怎么做?

dest.py具有以下格式:

class TestPageErrorSection(unittest.TestCase): 
    """ 
    """ 
    browser = None 
    site_url = None 

    def setUp(self): 
     global SITE_URL, BROWSER 

     if not BROWSER: 
      BROWSER = self.browser 

     if not SITE_URL: 
      SITE_URL = self.site_url 

     BROWSER.open(SITE_URL) 
     BROWSER.window_maximize() 
     print 'page not found 404 error' 
     self._pageerror_section = ErrorSection(BROWSER) 

    def _primary_navigation(self): 
     # I want to call test_check_footer_visible here. 

Call Class Method From Another Class

回答

1

尝试一切你不能(没有做一些真正黑幕的东西 - 看到@glglgl评论) - 至少不而不需要改变你的代码。你不能这样做的原因是因为test_check_footer_visible将声明传入的第一个元素是类FooterSection(它不是 - 它是TestPageErrorSection的一个实例)的一个实例。你有(至少)一些重选因素的选项。

1)从FooterSectionTestPageErrorSection继承和直接使用该功能(例如self.test_check_footer_visible()这似乎并不像基于类的名字一个非常好的选择,我

2)请test_check_footer_visible()常规功能。然后可以从任何一个班级调用它。 3)创建第三个类(例如SectionBase),将test_check_footer_visible放在该类上,并让其他2个类继承其中。

+0

不完全 - 它可以通过'FooterSection.test_check_footer_visible.im_func(self)'成为可能,但它会是非常糟糕的风格 - 有两个原因:1.因为它是不好的风格,因为被调用者旨在从完全不同的阶级中获得“自我”。但它会工作。这只是为了完整性。 – glglgl

+0

@glglgl - 是的,我想这会奏效。这样做有点扭曲。从本质上讲,这是一个非常可疑的方式实施#2我想...... – mgilson

+0

是的。本质上,它解除了将函数作为方法所做的过程...'FooterSection .__ dict __ ['test_check_footer_visible'](self)'也可以,但现在变得很奇怪。 – glglgl