Skip to content Skip to sidebar Skip to footer

Move The Headings From Top Of Cucumber's Data Table To Side - Python

I am looking for the ways to change the headings of Cucumber's Data Table to the side. So it will make the feature file readable. Ordinary way: | Name | Email | Phone No. | ...

Solution 1:

You can implement this behaviour quite simply yourself, here is my version:

deftabledict(table, defaults, aliases = {}):
"""
    Converts a behave context.table to a dictionary.
    Throws NotImplementedError if the table references an unknown key.

    defaults should contain a dictionary with the (surprise) default values.
    aliases makes it possible to map alternative names to the keys of the defaults.
    All keys of the table will be converted to lowercase, you sould make sure that
    you defaults and aliases dictionaries also use lowercase.

    Example:
        Given the book
          | Property                             | Value              |
          | Title                                | The Tragedy of Man |
          | Author                               | Madach, Imre       |
          | International Standard Book Number   | 9631527395         |

    defaults = { "title": "Untitled", "author": "Anonymous", "isbn": None, "publisher": None }
    aliases = { "International Standard Book Number" : "isbn" }
    givenBook = tabledict(context.table, defaults, aliases)

    will give you:
    givenBook == {
        "title": "The Tragedy of Man",
        "author": "Madach, Imre",
        "isbn": 9631527395,
        "publisher": None
        }
"""
initParams = defaults.copy()
validKeys = aliases.keys()[:] + defaults.keys()[:]
for row in table:
    name, value = row[0].lower(), row[1]
    ifnot name in validKeys:
        raise NotImplementedError(u'%s property is not supported.'%name)

    if name in aliases: name = aliases[name]
    initParams[name] = value
return initParams

Solution 2:

This doesn't look like it's related to numpy.

pivoting a list of list is often done with zip(*the_list)

This will return a pivoted behave table

from behave.model import Table


classTurnTable(unittest.TestCase):
    """ 
    """deftest_transpose(self):
        table = Table(
            ['Name', 'John', 'Mary'],
            rows=[
                ['Email', "john@example.com", "mary@example.com"],
                ['Phone', "0123456789", "9876543210"],
            ])

        aggregate = [table.headings[:]]
        aggregate.extend(table.rows)
        pivoted = list(zip(*aggregate))
        self.assertListEqual(pivoted,
                             [('Name', 'Email', 'Phone'),
                              ('John', 'john@example.com', '0123456789'),
                              ('Mary', 'mary@example.com', '9876543210')])

        pivoted_table = Table(
            pivoted[0],
            rows=pivoted[1:])
        mary = pivoted_table.rows[1]
        self.assertEqual(mary['Name'], 'Mary')
        self.assertEqual(mary['Phone'], '9876543210')

you can also have a look at https://pypi.python.org/pypi/pivottable

Post a Comment for "Move The Headings From Top Of Cucumber's Data Table To Side - Python"