【问题标题】:Python - How to import modules for unit testing?Python - 如何导入模块进行单元测试?
【发布时间】:2013-04-11 19:13:06
【问题描述】:

我在一个模块 (mod1) 中有一些功能。我想对它们运行一些单元测试(特别是鼻子测试)。我见过的大多数使用 unittest/nosetests 的介绍似乎只是导入代码以使用from mod1 import func1 进行测试。但是,据我所知,我想避免从 mod1 导入的模块 (mod2) 中导入任何代码,这样您就只能直接在 mod1 中测试代码。相反,我应该模拟 mod1 导入的 mod2 中的函数。我是不是很傻,from mod1 import func1 不会从 mod2 导入代码?或者是否有其他方法可以导入 func1 以便它不会从 mod2 导入任何代码?非常感谢!

【问题讨论】:

    标签: python unit-testing import nose


    【解决方案1】:

    这是你的设计决定,而不是 m1 与 m2 交互,所以你有选择

    1) Test mod1 with mod2
    2) Mock functions in mo2d
    

    但是有一些方法可以避免直接导入,请查看此代码

    https://github.com/django/django/blob/master/django/db/models/loading.py
    https://github.com/tangentlabs/django-oscar/blob/master/oscar/core/loading.py
    

    希望可以帮助您将模块分开一点(如果确实需要)

    【讨论】:

    • 所以“在 mod2 中模拟函数”是指我只是导入 mod1,然后再导入 mod2,然后我只是模拟 mod2 导入的每个函数,这样它们都没有被实际使用?有什么方法可以确保它们中的每一个都被模拟并且不会使用任何真正的功能?
    • 在运行你的测试框架时,必须有一个类似于我们在 unintest2 中的“setubStubs”的方法。这是放置此代码的正确位置。这东西voidspace.org.uk/python/mock/index.html# 可能有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2017-06-30
    相关资源
    最近更新 更多