user2829759
user2829759

Reputation: 3512

How to setup web2py enviroment for unittest

I have the following directory structure:

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

In account.py, there is a function accessing models/db.py, for instance

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

In test_account.py, I would like to test calcExpense:

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

If I run under web2py directory with python web2py.py -S myapp -M -R applications/myapp/tests/test_account.py, everything is fine thanks web2py setting all required environment.

But I don't want to run unittest one way for web2py (under web2py directory), and another way for the all other python projects (under tests).

In particular, I want to run all tests through the test runner, under tests by:

`python -m unittest -v runner`

How can I setup the enviroment in runner.py, so that test_account.py can import account.py, account.py have access to both db.py and tables defined in db.py?

Upvotes: 0

Views: 647

Answers (1)

Anthony
Anthony

Reputation: 25536

You can create a web2py environment using the env function in the gluon.shell module. For some ideas on how to proceed, check out web2py.test, in particular, here.

You might also want to look at an older project, web2py Test Runner.

Upvotes: 1

Related Questions