Python ddt unittest从测试数据中选择特定字段

时间:2016-12-16 10:25:37

标签: python unit-testing testing automated-tests data-driven-tests

我正在使用unittest和ddt在Python中构建数据驱动测试。

有没有办法让我能够从测试数据中选择特定字段,而不必将所有字段作为单独的参数传递?

例如: 我有一个包含客户的csv文件,如下所示:

    Title,FirstName,Surname,AddressA,AddressB,AddressC,City,State,PostCode
    Mr,Bob,Gergory,44 road end,A Town,Somewhere,LOS ANGELES,CA,90004
    Miss,Alice,Woodrow,99 some street,Elsewhere,A City,LOS ANGELES,CA,90003

由此我希望能够在测试中只选择名字,城市和州。

我可以像下面这样做,但是这看起来很混乱,并且会更广泛的文件:

@data(get_test_data("customers.csv"))
@unpack
def test_create_new_customer(self, Title,FirstName,Surname,AddressA,AddressB,AddressC,City,State,PostCode):
    self.customer.enter_first_name(FirstName)
    self.customer.enter_city(City)
    self.customer.enter_state_code(State)
    self.customer.click_update()

我希望能够从csv构建一个字典列表,然后按如下方式访问它:

@data(get_test_data_as_dictionary("customers.csv"))
@unpack
def test_create_new_customer(self, test_data):     
    self.customer.enter_first_name(test_data["FirstName"])
    self.customer.enter_city(test_data["City"])
    self.customer.enter_state_code(test_data["State"])
    self.customer.click_update()

然而,似乎ddt更聪明,我想并从字典中分解数据并仍然期望声明所有参数。

有没有更好的方法来实现我追求的目标?

0 个答案:

没有答案