How to access plugin options within a test? (Python Nose)

后端 未结 2 672
太阳男子
太阳男子 2021-01-06 21:05

We are trying to implement an automated testing framework using nose. The intent is to add a few command line options to pass into the tests, for example a hostname. We run

相关标签:
2条回答
  • 2021-01-06 21:17

    One shortcut is to access import sys; sys.argv within the test - it will have the list of parameters passed to the nose executable, including the plugin ones. Alternatively your plugin can add attributes to your tests, and you can refer to those attributes - but it requires more heavy lifting - similar to this answer.

    0 讨论(0)
  • 2021-01-06 21:40

    So I've found out how to make this work:

    import os
    from nose.plugins import Plugin
    
    case_options = None
    
    class test_args(Plugin):
        """
        Attempting to add command line parameters.
        """
        name = 'test_args'
        enabled = True
    
        def options(self, parser, env=os.environ):
            super(test_args, self).options(parser, env)
            parser.add_option("--hostname",
                        action="store",
                        type="str",
                        help="The hostname of the server")
    
        def configure(self, options, conf):
            global case_options 
            case_options = options
    

    Using this you can do this in your test case to get the options:

        from test_args import case_options
    

    To solve the different config file issues, I've found you can use a setup.cfg file written like an INI file to pass in default command line parameters. You can also pass in a -c config_file.cfg to pick a different config. This should work nicely for what we need.

    0 讨论(0)
提交回复
热议问题