Code Monkey home page Code Monkey logo

behave-http's Introduction

BDD HTTP steps implementation for Behave

Build Status Coverage Status

A Python package for HTTP-service testing. Contains reusable steps for Behave BDD (behaviour-driven development) tool. It’s mostly useful for testing REST APIs and interacting with JSON data over HTTP.

Usage

yourapp/features/environment.py:

from behave_http.environment import before_scenario

yourapp/features/steps/some_http_stuff.py:

from behave_http.steps import *

(You can mix them with your own steps in the same file.)

yourapp/features/some_api.feature:

Feature: Some API
  As an API client
  I want to be able to manage activities and sessions

  Background: Set server name, headers and reset test user's database
    Given I am using server "$SERVER"
    And I set base URL to "$URL"
    And I set "Accept" header to "application/json"
    And I set "Content-Type" header to "application/json"
    And I set BasicAuth username to "[email protected]" and password to "t"

  Scenario: Ensure account exists
    When I make a GET request to "account"
    Then the response status should be 200

If your test target is http://127.0.0.1:8081/api you can test it with:

SERVER=http://127.0.0.1:8081 URL=api behave

General rules on using quoted "values" in feature files:

  • JSONs and numbers (response code, array length) must appear as is.
  • Other substitutes must be quoted (variable names, headers and their values).

While there is no extensive documentation the features (self tests) directory contains (a hopefully complete) set of usage examples.

Testing for nested JSON content with non-ASCII characters in paths is not supported by the underlying ``jpath`` library.

Development

To install essential packages for the test suite:

pip install -r requirements_dev.txt

A complete list of development tools used in the Makefile can be installed with:

pip install coveralls docutils flake8 tox wheel

Running tests

Launch a special HTTP server responding to test requests:

python testserver.py

Then run feature tests in a separate shell:

make test-all # runs on every supported python version with tox
make test     # runs in current python environment only

Environment variables

Set TEST_SERVER to full URL (including schema) if default port (55080) on localhost is already used by another process. For example:

export TEST_SERVER=http://127.0.0.1:55081
python testserver.py >testserver.log 2>&1 &
make test-coverage

Acknowledgments

The REST steps code is initially derived from rest api blueprint [1], so this project inherits the same BSD 2-Clause License (see LICENSE file).

[1]https://bitbucket.org/tcorbettclark/rest-api-blueprint

behave-http's People

Contributors

mikek avatar tcorbettclark avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.