我有以下Django管理脚本,它尝试运行我的所有测试用例,对于每个测试用例,用户可以选择运行或不运行该特定情况。我正在使用reuse-db
选项,因为您会看到。这样做的问题是pytest
每次调用test_
时都会尝试将前缀pytest.main()
添加到数据库名称。所以,在第二次调用时,我看到了这个错误:
django.db.utils.OperationalError:致命:数据库" test_test_vgmdash"不存在
我没有在循环的第一次迭代中得到这个错误(是的,我选择' y'对于两次迭代)。
所以,我有两个问题"
pytest
发现来获取TestCases列表?我知道我可以使用内省库,但pytest
已经这样做了。这里的代码不能正常工作:
class Command(BaseCommand):
def handle(self, *args, **options):
all_cases = (
'TestContractNotifications',
'TestContracts',
'TestContractReviews',
'TestDnD',
'TestItemImport',
'TestUnitCalculations',
'TestAuth',
'TestAccess',
'TestDataAnalysis',
'TestProspectAnalyzer',
'TestDistReports')
assert(len(args) <= 1)
settings.PYTEST = True
arg_str = "-s --tb=short --maxfail=1 --ipdb --nomigrations"
choice = raw_input_choices("Reuse test DB?", ['y', 'n'], 'y')
if choice == 'y':
arg_str += "--reuse-db "
if args:
arg_str += "-k %s" % args[0]
pytest.main(arg_str)
else:
for test_case in all_cases:
raw_input_choices("Run %s?" % test_case,
['y', 'n'], 'y')
if choice == 'y':
pytest.main("%s -k %s" % (arg_str, test_case))