【问题标题】:CherryPy expose function only when testingCherryPy 仅在测试时公开功能
【发布时间】:2017-10-24 19:36:43
【问题描述】:

我正在构建我的第一个 CherryPy 应用程序,并且想要测试一个不应该公开可见(不公开)的方法,如果它公开,我可以很好地测试该方法但是我想知道是否有一种方法可以切换公开该方法取决于哪个文件调用该函数。例如,如果函数被调用,那么如果它是从 mainApp 调用的,它不会被暴露,但如果它是从测试文件调用的,它会被暴露?

the code I was thinking of is along the lines of

if __name__ != '__main__': @cherrypy.expose
def supersecretmethod(self)

但是我可以看到这不起作用并且已经做了一些研究,但似乎无法弄清楚如何做到这一点,有什么建议吗?谢谢

【问题讨论】:

    标签: python web web-applications cherrypy


    【解决方案1】:

    您可以为此目的使用自定义装饰器:

    def expose_if_not_main(func):
        if __name__ != '__main__':
            return cherrypy.expose(func)
        else:
            return func
    
    
    @expose_if_not_main
    def supersecretmethod(self):
        return 'result'
    

    【讨论】:

    • 这是一个不错的装饰器,但就测试而言,最好修补方法的暴露性。喜欢:unittest.mock.patch(WebAppClass.supersecretmethod, 'exposed', create=True, side_effect=True)
    猜你喜欢
    • 2020-12-15
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2020-12-18
    • 2019-09-04
    • 1970-01-01
    相关资源
    最近更新 更多