GithubHelp home page GithubHelp logo

rwdxll / vim-pyunit Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nvie/vim-pyunit

0.0 1.0 0.0 220 KB

Plugin enabling advanced unit test support inside your favorite editor.

Python 60.72% Vim Script 39.28%

vim-pyunit's Introduction

vim-pyunit

Installation

  1. Install the following packages from PyPI:

    • nose: the unit test runner;
    • nose_machineout: The machineout plugin formats the nose output so that Vim can parse it more easily;
    • vim_bridge: This is required for the vim plugin scripts, to call directly into Python functions.

    To run the unit tests for this project, you also need mock:

    • mock: Required to mock out the vim object in our test cases.
  2. Clone the git repository:

    git clone git://github.com/nvie/vim-pyunit.git
    cd vim-pyunit
    
  3. Copy the file ftplugin/python_pyunit.vim to your ~/.vim/ftplugin directory

Usage

  1. Open a Python file (or its corresponding unit test file named test_<filename>.py)
  2. Press <F8> to run nosetests on it

It shows the errors inside a quickfix window, which will allow your to quickly jump to the error locations by simply pressing [Enter].

Source files vs. test files

vim-pyunit assumes that you have a single test file for each Python source file. The settings PyUnitTestPrefix, PyUnitSourceRoot, PyUnitTestsRoot, and PyUnitTestsStructure determine how the plugin finds which test files belong to which source files.

The PyUnitTestsStructure setting is the most important one, because it determines where the PyUnit plugin searches for source and test files. There are three options:

  • flat: Put all test files in a single test directory. File names are composed by resembling the source's module structure, using underscores as separators. For example, the test file for the source file foo/bar.py is called tests/test_foo_bar.py.
  • side-by-side: Put all the test files in the same directory as the source files. Test files are prefixed with test_. For example, the test file for the source file foo/bar.py is called foo/test_bar.py. Use this setting when testing Django apps.
  • follow-hierarchy: Put all the test files in a separate test directory (specified by PyUnitTestsRoot), but keep the same directory hierarchy as used in the source directory. For example, the test file for the source file foo/bar.py is called tests/test_foo/test_bar.py.
  • nose: Put all the test files in a separate test directory (specified by PyUnitTestsRoot), but keep the same directory hierarchy as used in the source directory. As opposed to the follow-hierarchy layout, the intermediate directories are not prefixed with test_, only the last (file part) component is. For example, the test file for the source file foo/bar.py is called tests/foo/test_bar.py.

Keyboard mappings

By default, the vim-pyunit plugin defines the following keyboard mappings:

Keymap Description
F8 Run nosetests for the current file. This mapping can be used on both the source file, and on its corresponding test file. Calls PyUnitRunTests()
Shift+F8 Run nosetests for all test files in the project, this is equivalent to running nosetests in the root of your project. Calls PyUnitRunAllTests()
F9 Switch between the source and the corresponding test file. If the source or test file is not yet open, it is opened. The setting tests_split_window is used to determine where the file needs to be opened screen-wise. Calls PyUnitSwitchToCounterpart()

The plugin autodetects whether you have remapped the functions to custom keyboard mappings. If so, if does not register the default mappings. So to pick your own shortcut key mappings, simply add lines like this to your .vimrc:

noremap ,t :call PyUnitRunTests()<CR>
noremap! ,t <Esc>:call PyUnitRunTests()<CR>

(Which would map the test runner to comma-T. <F8> then remains what it was.)

If you wish to disable any automatic keyboard mapping, simply set:

let no_pyunit_maps = 1

Configuration

The plugin supports setting of the following variables:

Variable Description Values Default
PyUnitShowTests Shows the tests. 0 or 1 1
PyUnitCmd The command to run the unit test. any string "nosetests -q --with-machineout"
ProjRootIndicators List of filenames indicating the project root. list of file names [".git", "setup.py", "setup.cfg"]
ProjRootStopAtHomeDir Stop the search for the project root at the user's home dir. 0 or 1 1
PyUnitTestPrefix The filename prefix to use for test files. any string "test_"
PyUnitTestSuffix Not implemented yet 0 or 1 n/a
PyUnitSourceRoot The relative location where all source files live. directory spec, or empty ""
PyUnitTestsRoot The relative location where all tests live. directory spec "tests"
PyUnitTestsStructure Specifies how you wish to organise your tests. flat, follow-hierarchy, side-by-side "follow-hierarchy"
PyUnitTestsSplitWindow Specifies where test files should be opened, when oopened next to the source file. When set to no, doesn't open a new window at all, but reuses the current buffer. left, right, top, bottom, no "right"
PyUnitConfirmTestCreation Ask to confirm creation of new test files. 0 or 1 1

Tips

This plugin goes well together with the following plugin:

  • flake8 (Python static syntax checker under <F7>)

vim-pyunit's People

Contributors

nvie avatar

Watchers

 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.