我正在使用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更聪明,我想并从字典中分解数据并仍然期望声明所有参数。
有没有更好的方法来实现我追求的目标?