我使用命令nosetests
在远程服务器上测试我的Python应用程序。我不能修改测试的启动方式,也不能添加选项。我有一个Django应用程序和测试,但测试无法正常工作。
我的项目结构如下:
project
├── README.md
├── setup.py
├── mysite
│ ├── blog
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── tests.py
| | ├── ...
│ ├── db.sqlite3
│ ├── manage.py
│ ├── mysite
│ │ ├── __init__.py
│ │ ├── settings.py
| | ├── ...
在 project
目录中执行命令 nosetests
。我希望它能正确运行包含 2 个 Django 测试用例的 tests.py
文件。我尝试在项目根目录下创建 tests
目录,并使用 DiscoverRunner
调用测试:
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
test_dir = os.path.dirname(os.path.dirname(__file__)) # one level up
sys.path.insert(0, os.path.join(test_dir, 'mysite'))
class ServerTest(unittest.TestCase):
def test_runtests(self):
django.setup()
self.test_runner = DiscoverRunner(verbosity=1, interactive=True, failfast=False)
failures = self.test_runner.run_tests(['mysite'])
self.assertEqual(failures, 0)
它能够工作,但问题在于所有测试都被视为单个测试,并且服务器生成了错误报告。
另一个解决方案是:如果我在
project/mysite
中添加空的__init__.py
,nose会发现tests.py
,但测试会失败,因为'Apps are not loaded yet'
,这可能意味着我必须更早地调用django.setup()
,但我不知道该如何做。我找到了一个nose插件可以做到这一点,但我无法在远程机器上安装插件或更改选项。有什么想法可以让我的任何方法解决这个问题吗?
python manage.py test
在本地运行测试,测试是否能够正确工作? - BartDurvirtualenv
吗? - JACK ZHANG