首页 > 解决方案 > 如何在 django 视图中运行测试而不影响数据库

问题描述

我正在尝试Selenium通过 using 直接从 django 视图运行功能测试(在 python/django 中使用)management.call_command,以允许用户从网站运行测试。django 视图类似于:

class MyView():
    def get(self):
        output = call_command('test', 'folder.tests.MyTest')
        # doing ./manage.py test folder.tests.MyTest
        test_result = 'Test result: ' + output
        return something_http_with_test_result

为了不影响当前用户数据,最好的方法是什么?MyTest 将在数据库中创建大量对象,但用户不能看到它们。

谢谢

标签: pythondjangotestingcommand

解决方案


我发现正确运行它的最佳方法是使用 os.system :

import os
dir = 'your_absolute_path_to_project'
class MyView:
    def some_func_called():
        os.system(dir + '/manage.py test >' + dir + '/log.txt')

该项目和 firefox 必须具有相同的所有者,并且结果将在 log.txt 中。


推荐阅读