使用python-behave时遇到了问题。
我在每个场景之前创建一个沙箱数据库,然后在场景之后将其销毁。
但每种情况下内存使用量增加约20MB,所有测试用例(LoL)的总使用量约为3.xGB。
我的问题是当我调用context.runner.teardown_databases()时,为什么不释放内存?
from django.test.runner import DiscoverRunner
def before_scenario(context, scenario):
context.runner = DiscoverRunner()
context.runner.setup_test_environment()
context.old_db_config = context.runner.setup_databases()
def after_scenario(context, scenario):
context.runner.teardown_databases(context.old_db_config)
context.runner.teardown_test_environment()
Feature:
Scenario:
Given I have a debit card
When I withdraw 200
Then I should get $200 in cash
@given('I have a debit card')
def step1(context):
pass
@given('I withdraw 200')
def step2(context):
pass
@given('I should get $200 in cash')
def step3(context):
pass
python-behave:版本1.2.5
django:版本1.8.0
python:版本2.7
任何建议都表示赞赏。
答案 0 :(得分:0)
添加gc.garbage()后,我找到了根本原因。
def after_scenario(context, scenario):
context.runner.teardown_databases(context.old_db_config)
context.runner.teardown_test_environment()
gc.collect()
print gc.garbage
那些无法收集的对象应该是模型实例,因为这些实例是循环引用的。 然后我添加一个清除函数来删除thmem,现在内存正常。