做测试的时候遇到难搞的模块需要一遍一遍地调,这时候如果可以只测试这一个模块就好了。于是打开谷歌,找到了大佬Miguel Grinberg给出的完美解决方法

test函数中添加参数test_name,如果test_name存在则调用unittest中的一个loadTestsFromName方法。

@manager.command
def test(coverage=False, test_name=None):
"""Run the unit tests."""
import unittest
if test_name is None:
tests = unittest.TestLoader().discover('tests')
else:
tests = unittest.TestLoader().loadTestsFromName('tests.' + test_name)
unittest.TextTestRunner(verbosity=2).run(tests)

在运行py项目的时候,用以下命令测试特定的模块或TestCase

# 运行test_api模块中的所有测试项
python run.py test -t test_api

# 运行test_api模块,APITestCase类中的测试项
python run.py test -t test_api.APITestCase

# 运行指定测试项test_404
python run.py test -t test_api.APITestCase.test_404