Python重复功能与其他测试数据(json文件)

时间:2018-06-22 10:22:37

标签: python json python-2.7 selenium-webdriver lettuce

我正在用Selenium和Lettuce运行Python。我想自动化测试用例,并奠定了基础。

是否可以使用多个不同的测试数据文件(.json)对不同的测试数据重复相同的功能?无需手动替换文件,而是像“先使用testdata1.json,然后使用testdata2.json,testdata3.json”等。

与不同示例一起属于的测试数据文件具有相同的键名,只是值不同。现在,我正在像这样加载json文件:

def loadTestData():
    with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'testdata\\testdata.json'), 'r') as f:
        world.data = json.load(f)

    with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'testdata\\variantdata.json'), 'r') as f:
        world.variantdata = json.load(f)

我在哪里调用数据的示例如下:

def createLab(self, i=0):
    self.driver.find_element(*CreateLabLocators.labname).send_keys(world.data['labdata']['labname'])
    self.driver.find_element(*CreateLabLocators.city).send_keys(world.data['labdata']['city'])
    self.driver.find_element(*CreateLabLocators.state).send_keys(world.data['labdata']['state'])
    self.driver.find_element(*CreateLabLocators.zipcode).send_keys(world.data['labdata']['zipcode'])
    self.driver.find_element(*CreateLabLocators.street).send_keys(world.data['labdata']['street'])
    self.driver.find_element(*CreateLabLocators.number).send_keys(world.data['labdata']['number'])
    self.driver.find_element(*CreateLabLocators.country).send_keys(world.data['labdata']['country'])
    self.driver.find_element(*CreateLabLocators.website).send_keys(world.data['labdata']['website'])
    self.driver.find_element(*CreateLabLocators.phone).send_keys(world.data['labdata']['phone'])
    self.driver.find_element(*CreateLabLocators.fax).send_keys(world.data['labdata']['fax'])
    if i:
        self.driver.find_element(*CreateLabLocators.browse).send_keys(world.data['labdata']['logo_path'])

现在有一种方法可以保持功能不变,但是这次例如world.data ['labdata'] ['labname']是从\ testdata2.json文件而不是\ testdata.json文件中使用的吗?

这样,一旦Labname值将是“ TechLab”,第二次是“ BioLab”。要使该修补程序保持全自动运行,有什么解决方案?

我能想到的一种方法是“复制”所有代码,并使其使用加载了testdata2的world.data2。但是我不认为这是适当的方法,一旦有数百个testdata文件,结局就会非常糟糕。

0 个答案:

没有答案