生成Django行为代码

时间:2014-05-06 11:51:53

标签: acceptance-testing python-behave

我正在使用我的Django应用程序的验收测试。 是否有可能生成实际测试所需的python代码? 到目前为止我所拥有的骨架如下:

@given('I am logged in')
def step_impl(context):
    assert False

@given('I am on the contact list')
def step_impl(context):
    assert False

...

1 个答案:

答案 0 :(得分:0)

Django Testing Example page上有一些例子,它们会以此为出发点:

from behave import given, when, then

@given('a user')
def step_impl(context):
    from django.contrib.auth.models import User
    u = User(username='foo', email='foo@example.com')
    u.set_password('bar')

@when('I log in')
def step_impl(context):
    br = context.browser
    br.open(context.browser_url('/account/login/'))
    br.select_form(nr=0)
    br.form['username'] = 'foo'
    br.form['password'] = 'bar'
    br.submit()

@then('I see my account summary')
def step_impl(context):
    br = context.browser
    response = br.response()
    assert response.code == 200
    assert br.geturl().endswith('/account/')

@then('I see a warm and welcoming message')
def step_impl(context):
    # Remember, context.parse_soup() parses the current response in
    # the mechanize browser.
    soup = context.parse_soup()
    msg = str(soup.findAll('h2', attrs={'class': 'welcome'})[0])
    assert "Welcome, foo!" in msg

可以自动生成测试应用所需的代码吗?不,不是没有编写自己的逻辑来这样做。

测试Django应用程序的第一步应该是编写Feature Files。功能文件完成后,您可以运行behave -d,它会为您提供存根/框架代码,以便复制到step files。此时,您可以编写脚本来与Django应用程序进行交互。