使用 Python 从 0 开发属于你的个人管理系统 25 | 如何在你的项目中使用测试用例

当你在项目写了一个又一个的功能或函数后,你还需要做进一步的操作,那就是测试,在 Python 中,有一个测试框架叫 unittest ,它就是专门用来写测试的。

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 来测试它们。

发表回复