从命令行运行python代码时如何读取配置文件作为输入

时间:2016-05-30 22:22:58

标签: python selenium selenium-webdriver pytest python-unittest

我在python中有多个测试类和一个basetest类。 测试类继承自basetest类。

我想从命令行运行测试类,它需要一些输入参数,这些输入参数应存储在配置文件中。此配置文件可以作为命令行的输入提供。

如何实现此功能,从命令行提供,然后解析配置文件。我需要在basetest类中进行解析,因为这将用于所有测试类。

测试类:如果内容没有多大意义,您可以忽略它,因为它只是一个示例类

from selenium import webdriver
import unittest

class TestCase():

    def setUp(self):
        super().setUp()

    def test(self):
        baseUrl = "https://www.google.com"
        driver = webdriver.Firefox()
        driver.get(baseUrl)
        elementByXpath = driver.find_element_by_xpath("//input[@id='name']")

        if elementByXpath is not None:
            print("We found an element by XPATH")

if __name__ == '__main__':
    unittest.main(verbosity=2)
    result = unittest.TestResult()

BaseTestCase:

class BaseTestCase():

    def __init__(self):
        pass

    def setUp(self):
        # In the setup() or __init__(), config file should be parsed
        self.login.login("admin", "admin")

    def tearDown(self):
        self.log.info("Driver quit, session closed")

将从命令行运行的文件将是测试类。 像这样的东西: python testcase.py --configfile

我是python的新手,对此的任何帮助都非常感谢。

我曾经使用Java和TestNG,这很容易。我们可以在TestNG xml文件中提供任何配置。

我正在使用python中的unittest,任何关于哪个框架可以比unittest更好的建议也会很棒。

这是一个GUI测试框架,我需要在不同的浏览器和平台上运行测试。

1 个答案:

答案 0 :(得分:0)

使用如下的层次结构。

`
|
|- TestModule
       |
       |- main.py (your entry point to the test)
       |- conf.ini
       |- parse_config.py

现在,您parse_config.pySafeConfigParser上呼叫conf.ini上的class ParseConfig(object): def __init__(self): self.base_url = None .... def parse_file(self): parser = SafeConfigParser() parser.read("config.ini") self.base_url = parser.get("section", "url") .... 。将其路径作为字符串传递给配置解析器。

在测试运行器的setup(或者before_all钩子)中实例化你在parse_config文件中创建的类。

parse_conf.py

希望你大致了解要做什么

修改

import argparse class ParseConfig(object): def __init__(self): self.base_url = None self.file_name = None self.parse_cli() # This will parse the config file name from CLI self.parse_file() # This will parse the config file whose name you provide def parse_cli(self): parser = argparse.ArgumentParser(description="Parse conf file") parser.add_argument("--conf", "-c", metavar="Conf", help="Config file name") args = parser.parse_args() self.file_name = args.conf def parse_file(self): parser = SafeConfigParser() parser.read(self.file_name) self.base_url = parser.get("section", "url") ....

main.py

from parse_config import ParseConfig ... ... ParseConfig().parse_cli() ParseConfig().parse_file() ... ...

python main.py -c conf.ini

通过这种方式,您可以解析多个配置文件名。

现在调用你的脚本,

%a{class: "post_url", href: "#{cl_image_path(post.image.full_public_id, width:640, crop:"scale", class:"img-responsive")}", "data-gallery": ""}