使用 Python 从 0 开发属于你的个人管理系统 25 | 如何在你的项目中使用测试用例
当你在项目写了一个又一个的功能或函数后,你还需要做进一步的操作,那就是测试,在 Python 中,有一个测试框架叫 unittest ,它就是专门用来写测试的。
通往 Python 高手之路
unittest
它主要提供了以下几个功能:
test case
最小的单元测试,你可以把具体的每个功能写成单元测试用例,这样的每个单元测试用例可以检查特定的功能响应。
test fixture
有些测试需要环境,比如数据库连接的操作,在测试完成后也需要清理操作,test fixture 就提供了你在测试前后的准备操作,其中主要用到 setUP 和 tearDown 方法,分别在测试被执行前后被自动调用。
test suite
如果你有很多测试都需要用到同样的环境,比如每个 test fixture 只对应每个 test case,你可以将所有的测试用例添加成一个测试集合,然后在这里统一执行就可以了。
test runner
顾名思义,这是测试的运行组件,通过它来执行测试用例,它会返回测试结果给我们看。
如何使用 unittest
上面的这些如何运用到我们的项目中呢?
接下来我就给你讲一下。
在你的项目中创建 test 包来管理你要测试的模块,比如:
tests
├── init.py
├── test_todo.py
└── test_user.py
测试文件需要用 test 开头命名,测试方法也是,这样 unittest 才会
本文隐藏内容 登陆 后才可以浏览
还可以定义 flask 命令来运行测试,你可以定义 test 方法:
@app.cli.command() def test(): tests = unittest.TestLoader().discover("tests") unittest.TextTestRunner(verbosity=2).run(tests)
这样在命令行中使用 flask test 就可以执行。
执行显示 OK 说明测试通过。
test_signup_user (tests.test_user.UserTestCase) ... ok ---------------------------------------------------------------------- Ran 1 test in 0.024s OK
测试合集
你可以将测试用例集合到一起测试,使用 test_suit,比如:
def suite(): suite = unittest.TestSuite() suite.addTest(WidgetTestCase('test_default_widget_size')) suite.addTest(WidgetTestCase('test_widget_resize')) return suite if __name__ == '__main__': runner = unittest.TextTestRunner() runner.run(suite())
你可以通过将 TestCase 添加到 suite 中,然后使用 runner 来测试它们。