Execute StepDefinition on Python

Dahun Yoo·2020년 12월 4일
0
post-thumbnail

StepDefinition파일과 각각 Step과 연결된 모듈을 생성했다면, 내부 로직을 구현해야할 것 입니다.
이때 어떠한 흐름이 있는 시나리오라면, 특정 Request의 response에서 ID값을 뽑아 다음 Request로 넘기는 등의 로직이 필요할 수도 있습니다. 이 때 context parameter를 사용합니다.

@given('the Book details which needs to be added to Library')
def step_impl(context):
    context.add_book_url = getConfig()['API']['endpoint'] + APIResourses.add_book
    context.query = "select * from books"

contextBehave library에서 지원하는 오브젝트이므로 몇가지 요소들이 정해져있긴 합니다만, 그것과는 별개로, 유저가 직접 attribute를 생성해서 지정해줄 수 있습니다.
즉, 위 코드처럼 context obeject에 add_book_url 이나 query 값을 생성/지정해줄 수 있는 것입니다.

@when('We execute the AddBook PostAPI method')
def step_impl(context):
    context.response = requests.post(context.add_book_url,
                                     json=buildPayLoadFromDB(context.query),
                                     headers={
                                         "Content-Type": "application/json"
                                     }
                                     )

given 라인에서 추가해준 add_book_url attribute를 when 라인에서 다시 사용하고 있습니다.

@given('the Book details which needs to be added to Library')
def step_impl(context):
    context.add_book_url = getConfig()['API']['endpoint'] + APIResourses.add_book
    context.query = "select * from books"


@when('We execute the AddBook PostAPI method')
def step_impl(context):
    context.response = requests.post(context.add_book_url,
                                     json=buildPayLoadFromDB(context.query),
                                     headers={
                                         "Content-Type": "application/json"
                                     }
                                     )


@then('book is successfully added')
def step_impl(context):
    bookID = context.response.json()['ID']

    requests.delete(getConfig()['API']['endpoint'] + APIResourses.delete_book,
                    json={
                        "ID": bookID
                    })

    assert context.response.status_code == 200
    assert context.response.json()['Msg'] == "successfully added"

Gherkin 문법대로, given, when, then 의 흐름대로 실행될 시, 각각의 모듈에서 attribute를 지정하고 다음 request에서 사용할 수 있습니다.


Behave library를 이용한 BDD 코드를 실행시키기 위해서는, 다음과 같이 Command-line에 입력해줍니다.
behave {PATH}/feature/{FEATURE_FILE_NAME}

profile
QA Engineer

0개의 댓글