我在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测试框架,我需要在不同的浏览器和平台上运行测试。
答案 0 :(得分:0)
使用如下的层次结构。
`
|
|- TestModule
|
|- main.py (your entry point to the test)
|- conf.ini
|- parse_config.py
现在,您parse_config.py
在SafeConfigParser
上呼叫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": ""}