Skip to content

pytest plugin for writing functional tests with pexpect and docker

Notifications You must be signed in to change notification settings

nvbn/pytest-docker-pexpect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pytest-docker-pexpect Build Status

py.test plugin for writing simple functional tests with pexpect and docker.

Installation

pip install pytest-docker-pexpect

Usage

The plugin provides spawnu fixture, that could be called like spawnu(tag, dockerfile_content, command), it returns pexpect.spwanu attached to command runned inside a container that built with tag and dockerfile:

def test_echo(spawnu):
    proc = spawnu(u'ubuntu', u'FROM ubuntu:latest', u'bash')
    proc.sendline(u'ls')

Current working directory available inside the container in /src.

It's also possible to pass arguments to docker run with spawnu:

spawnu(u'ubuntu', u'FROM ubuntu:latest', u'bash',
       docker_run_arguments=[u'--expose', u'80'])

spawnu provides pexpect API and additional docker-specific API:

  • proc.docker_container_id – container id
  • proc.docker_inspect() – decoded json output of docker inspect
  • proc.docker_stats() – decoded json output of docker stats

Also the plugin provides TIMEOUT fixture, that can be used for simple asserts, like:

assert proc.expect([TIMEOUT, u'1'])

run_without_docker fixtures, that indicates that docker isn't used.

If you want to disable tests if docker isn't available, use @pytest.mark.skip_without_docker.

If you want to run parametrized test only once without docker, use @pytest.mark.once_without_docker.

Usage without docker

With flag --run-without-docker tests can be run in environment without docker. In this mode tests runs only for first container and docker initialization steps are skipped. Be careful, in this mode all commands will be execute directly on local system!

Licensed under MIT

About

pytest plugin for writing functional tests with pexpect and docker

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages