如何为unittest

时间:2015-11-25 12:53:18

标签: python unit-testing web2py

我有以下目录结构:

web2py/applications/myapp
web2py/applications/myapp/controllers/account.py
web2py/applications/myapp/models/db.py
web2py/applications/myapp/tests/runner.py
web2py/applications/myapp/tests/test_account.py

account.py中,有一个访问models/db.py的函数,例如

def calcExpense():
    rows = db(db.expense.id >0).select()
    expense = blah and blah..
    return expense

test_account.py中,我想测试calcExpense

class TestAccount(unittest.TestCase):
    def testCalcExpense(self):
        self.assertTrue()
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestAccount))
unittest.TextTestRunner(verbosity=2).run(suite)

如果我使用web2pypython web2py.py -S myapp -M -R applications/myapp/tests/test_account.py目录下运行,一切都很顺利,感谢web2py设置了所有必需的环境。

但是我不想为web2py(在web2py目录下)单向运行unittest,而对于所有其他python项目(在tests下)则另一种方式。

特别是,我希望通过tests下的测试运行器运行所有测试:

`python -m unittest -v runner`

如何在runner.py中设置环境,以便test_account.py可以导入account.pyaccount.py可以访问db.py和{中定义的表{1}}?

1 个答案:

答案 0 :(得分:1)

您可以使用env模块中的gluon.shell功能创建web2py环境。有关如何继续操作的一些建议,请查看web2py.test,尤其是here

您可能还想查看较旧的项目web2py Test Runner